这是一个很长的路要走,但我设法在Linux Mint 17 Cinnamon 64-bit下包含一个包含在C ++代码中的共享文件(libpi_pi_gcs2.so)。现在灰尘背负着我还有一个问题......让我总结一下:
我在usr / local / lib中复制了libpi_pi_gcs2.so。
尝试使用
编译main.cppg++ -Wall -o test main.cpp -lpi_pi_gcs2
faild,返回
/usr/bin/ld: skipping incompatible //usr/local/lib/libpi_pi_gcs2.so when searching for -lpi_pi_gcs2
/usr/bin/ld: cannot find -lpi_pi_gcs2
collect2: error: ld returned 1 exit status
我和我的室友谈过,他猜测共享库可能只有32位兼容。
使用-m32
让我向前迈出一步!但是产生了新的错误。
我用Google搜索,似乎我需要C32标准库。我安装了:
apt-get install ia32-libs
旧的错误消息再次消失,新的消息出现后,我在谷歌搜索安装后:
apt-get install g++-multilib
现在尝试使用
编译它g++ -Wall -o test -m32 main.cpp -lpi_pi_gcs2
让错误信息:
//usr/local/lib/libpi_pi_gcs2.so: undefined reference to `dlsym'
//usr/local/lib/libpi_pi_gcs2.so: undefined reference to `dlopen'
//usr/local/lib/libpi_pi_gcs2.so: undefined reference to `dlclose'
解决方案是以下命令:
g++ -Wall -o test -m32 main.cpp -lpi_pi_gcs2 -ldl
现在我的问题:
是否有必要显式地声明-ldl,即与libdl.so链接,因为-m32标志声明后面的所有内容都是32位,因此链接器将没有明确地 写-ldl搜索32位libdl.so?我想我的是64位我正在使用64位系统。
你怎么看?更多细节和背景信息表示赞赏。问候,
newandlost