在过去的几个小时里,我对此束手无策,试图弄清楚到底发生了什么。我正在运行SLES12PHP服务器,并且需要从SP3连接到Microsoft SQL server数据库,我遵循微软的文档,直到它要求我运行以下命令:
pecl install sqlsrv
该命令失败,并显示以下相关输出:
checking whether the C compiler works... no
configure: error: in `/tmp/pear/temp/pear-build-rootLa81RX/sqlsrv-5.3.0':
configure: error: C compiler canno
我正在使用64位Linux下的Eclipse CDT编写一个简单的C共享库。
代码在<stdlib.h>中有一个对rand()函数的引用,它可以很好地编译,但在链接它时,会从链接器报告以下错误:
gcc -shared -o "libalg.so" ./sort.o
/usr/bin/ld: ./sort.o: relocation R_X86_64_PC32 against undefined symbol `rand@@GLIBC_2.2.5' can not be used when making a shared object; recomp
我有一个共享库项目,只有当我将-fPIC添加到Compiler命令(这解决了问题)时,它才会生成。
当我试图在这个项目中使用静态库时,我会遇到类似的问题,但在这种情况下,我不能用-fPIC修复:
libtest.a(exception.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
我能不能得到一些帮助,我如何能够成功地连接这个?我也尝试过将-fPIC添加到链接器选项中,但我也得到了相同的错误。
我在
有没有办法用散列风格的SYSV来编译GCC的libstdc++而不是GNU/Linux?我有一个工具链(通过交叉工作台-ng),我使用它来编译我们公司的库,以便与非常广泛的Linux系统一起工作。
其中一个系统是一个非常老的RedHat,它只有SYSV哈希样式,当我用工具链编译一个C只库/程序时,它工作得很好,因为生成的二进制文件使用了SYSV。
但是,当我链接到libstdc++时,二进制自动更改为GNU/Linux风格,原因是libstdc++是作为GNU/Linux构建的,因此出现了问题。
在这个系统中运行二进制文件会给出错误。
ELF file OS ABI invalid
为了完整起