首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >x86_64系统上的Eclipse-CDT无法链接到共享库

x86_64系统上的Eclipse-CDT无法链接到共享库
EN

Stack Overflow用户
提问于 2011-11-18 07:45:01
回答 2查看 1K关注 0票数 2

我在windows上使用Eclipse-CDT编译了一些库。然而,当我试图在linux下编译它们时,gcc总是给我一个错误/usr/bin/ld: cannot find -lrequestedLib。我在两个环境之间使用完全相同的构建设置(即,我确保添加了包含我需要链接的库的目录)。我确信系统对这些文件也有读访问权限。我不确定这是怎么回事。请帮帮忙。

编辑:以下是ecplise用来构建库的命令:

代码语言:javascript
复制
gcc -I/home/me/lib/ -O3 -Wall -c -fmessage-length=0 -olibToMake.o ../libToMake.c 
gcc -L/home/me/lib/ -shared -olibToMake.so libToMake.o -lrequestedLib

编辑2:呈现错误的命令是两个命令中的第二个,导致输出/usr/bin/ld: cannot find -lrequestedLib

编辑3:我已经确认了requestedLib.so是一个x86_64二进制文件。

EN

回答 2

Stack Overflow用户

发布于 2011-11-18 07:51:11

如果不想将-L命令行选项传递给gcc(1),请确保将包含库的路径添加到/etc/ld.so.conf/etc/ld.so.cond.d/<something>

安装库之后,您还需要手动运行ldconfig(8)。(大多数新用户忘记了这一步,因为典型的包管理器在安装新库时会为您处理这一步。)

票数 0
EN

Stack Overflow用户

发布于 2011-11-18 12:21:15

gcc -I/home/me/lib/ -O3 -Wall -c -fmessage-length=0 -olibToMake.o ../libToMake.c

gcc -L/home/me/lib/ -shared -olibToMake.so libToMake.o -lrequestedLib

x86_64上构建64位共享库时,通常需要-fPIC标志,否则在共享库链接时会出现recompile with -fPIC错误。

由于您没有使用-fPIC,但是您的链接成功了,所以您很可能使用了针对i*86的(非默认) gcc (即生成32位输出)。可以通过运行file libToMake.so来确认这一点。

您没有显示实际失败的命令(产生cannot find -lrequestedLib错误的命令)。我猜该命令使用的是另一个针对x86_64的gcc (默认的?)。如果它看起来像

代码语言:javascript
复制
gcc main.c -L/home/me/lib -lrequestedLib

该命令将忽略/home/me/lib/librequestedLib.so (因为您不能将32位和64位代码链接在一起),并将继续在其他地方搜索librequestedLib。当它找不到64位版本的librequestedLib时,它将生成您正在获取的错误消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8175997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档