-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
windows 使用 Cygwin 构建 swool-cli 不成功。 #569
Comments
第一个问题: 第二个问题: https://github.com/swoole/swoole-cli/actions/runs/8262323228/job/22601412406#step:10:1606 只是警告 可以先下载已经构建好的版本试试 https://github.com/swoole/swoole-cli/releases/tag/v5.1.1.0 https://github.com/swoole/swoole-cli/releases/tag/v5.1.1.0 https://github.com/swoole/swoole-cli/actions/runs/8262323228/job/22601412406#step:10:1606 |
oci8 或者 pdo_oci 待验证 |
第一个问题。我 make clean 之后重新构建,还是会发生同样的报错。 |
第一个问题,我再试试。 第二个问题: 执行打包看看,然后在测试看看 |
构建结果是正常的,构建出来的是命令行程序,不应该用双击打开程序。 |
@jingjingxyk 感谢你的帮助。我这边直接编译已经能够成功了,之前的问题应该是库版本或者库缺失的问题,通过 quickstart 下面的快速安装脚本,已经解决这个问题了。我现在在尝试想要用 OCI8 或者 pdo_oci 。 |
@jingjingxyk 请问现在 swoole-cli 的编译还不支持 oci8 和 pdo_oci 吗?还是说仅是 Cygwin 的 swoole-cli 的编译不支持 oci8 和 pdo_oci 。我在 cygwin-config.sh 这个脚本中指定配置参数 --with-oci8 和 --with-pdo-oci 。如下图: |
|
@jingjingxyk 我发现为什么之构建了一部分 PHP 扩展了,原来是因为 cygwin-config.sh 这个文件 configure 中的参数项行与行之间不能有空行,也就是回车,回车被当作了结束,所以只 configure 了一部分参数项,正好启用 swoole 扩展的参数项就是在空行后面,导致没有被 configure 进去。也就导致输出了 swoole 扩展不存在这个问题。 |
@jingjingxyk pdo-oci 好像找不到 sdk 下 include 目录的路径,oci8 在 configure 阶段 check for pcntl 会检测失败 instantclient 目录,如下图所示,包含了 basc 目录和 sdk 目录:
在 configure 阶段会报错输出以下内容:
如下图所示:
![image-20240315200542354](Cygwin 构建 swoole-cli 的 pdo-oci md.assets/image-20240315200542354.png) 在 configure 阶段会报错输出以下内容:
如下图所示: 我不知道哪种写法是正确的,第一种: 如果使用 oci8 扩展,在 configure 阶段的 |
写法是否正确,进入扩展目录看描述,看例子就能判断,是否正确 。参考: https://www.php.net/pdo_oci ;https://www.php.net/manual/en/oci8.installation.php 方法一: 应该找到 cygwin 环境下对应的 instantclient库 ,这里没有搜到https://cygwin.com/cgi-bin2/package-grep.cgi?grep=instantclient 使用那种,我也不确定,需要实验验证。 |
@jingjingxyk 在新版的 php 当中, 昨天看了一晚上 现在好像目录都能找到了但是又出现了新的问题,如下所示:
感觉这一段输出中的:
这四条信息应该是最后导致错误 从这段信息来看是我不太确信是因为我环境变量配置的仍然有问题,导致它最终还是没有找到 还有就是之前所说的如果开启 |
需要确认Oracle Instant Client 是否支持cygwin 环境,我在Oracle 官网上没有找到相关信息 https://www.google.com/search?q=Oracle+Instant+Client+for+cygwin+ |
@jingjingxyk |
linux 、macos 环境下是需要这样做的,cygwin 环境下不需要 |
@jingjingxyk 我一开始是想用 Cygwin 的。因为它很方便,但是恰巧没有我要用的 pdo_oci 和 oci8 扩展,然后就想办法解决,看了 Cygwin 的构建编译阶段的几个 sh 脚本,Cygwin 下应该是不走 builder 目录下的 extension 和 library ,直接走 ext 目录吧。但是后面就遇到了之前所说的问题。好像在 Cygwin 下只是在 config.sh 中指定 pdo_oci 扩展和 oci8 扩展的 Oracle Instant Client 目录,走不下去。没办法了只能转向 wsl 或者 linux 这种了。结果发现一样的过不了 Oracle Instant Client 这一关,不过好在还有点思路能尝试。还是说在 Cygwin 环境中也需要将 oracle instant client 集成进来,而不能单纯的只是在 config.sh 中的 --with-pdo-oci 这个参数中指定 oracle instant client 库的目录。 |
@vkviyu 真正的问题在于oracle instant client 没有开放源码,官方仅提供可动态加载的二进制库 |
构建步骤是按照文档所描述的以下五步所进行的:
bash ./sapi/scripts/cygwin/install-re2c.sh
bash ./sapi/scripts/cygwin/cygwin-config-ext.sh
bash ./sapi/scripts/cygwin/cygwin-config.sh
bash ./sapi/scripts/cygwin/cygwin-build.sh
bash ./sapi/scripts/cygwin/cygwin-archive.sh
libtool: unrecognized option
-export-dynamic' Try
libtool --help' for more information.make: *** [Makefile:258: bin/swoole-cli] Error 1
在 cygwin-build.sh 阶段,会报这个错误:libtool: unrecognized option `-export-dynamic'
同时如果在 config.sh 中启用了 opcache :--enable-opcache ,那么在 cygwin-config.sh 这个阶段也会报错找不到共享内存,不支持 sysvipc 之类的错误。
使用 build-native-cli 的版本进行构建,可以在最后构建出一个 php.exe ,但是在最后也会提示:
sapi/cli/php_cli_server.o sapi/cli/ps_title.o sapi/cli/php_cli_process_title.o -lrt -lm -o sapi/cli/php
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: warning: --export-dynamic is not supported for PE+ targets, did you mean --export-all-symbols?
然后点击构建出的 php.exe ,使用 php -m 就会提示:”无法定位程序输入点 setproctitle 于动态链接库 php.exe 上“。
因为我需要使用 oci8 或者说 pdo_oci ,还不得不直接在 windows 环境上直接使用。所以只能自己构建。
我想问一下官方对于 php-cli-cygwin 版本构建时也出现过这种问题吗。还是说我的 cygwin 少了一些必要的库没有安装吗?或者说安装过程中少了一些步骤吗?
The text was updated successfully, but these errors were encountered: