首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ubuntu中设置64位g++库的库搜索路径?

如何在Ubuntu中设置64位g++库的库搜索路径?
EN

Stack Overflow用户
提问于 2011-11-29 04:01:40
回答 1查看 3.4K关注 0票数 4

尝试使用Ubuntu为64位unix编译一些东西。作为一个免责声明,我几天前才开始使用linux和gcc,所以我还在学习。无论如何,得到以下错误:

/home/myuser/myproject/myfile.cpp:437:未定义对`clock_gettime的引用

快速谷歌显示,我需要-lrt选项来链接到librt.a。所以我检查了我的命令行(为了可读性而格式化,不同的文件名,并且我删除了文件名列表):

代码语言:javascript
复制
/usr/bin/g++ 
-Wl,
--gc-sections 
-fno-exceptions 
-m64 
-B/usr/bin 
-o 
"/home/myuser/myproject" 
-Wl,
-Map, "/home/myuser/myproject/myproject.map" 
-g  
"/home/myuser/myproject/myproject.cpp.obj" 
..and some more .objs..
-Xlinker 
--start-group  
"-lpthread"  
"-lrt"
"/home/myuser/myproject/lib/mylib.a" 
..and some more .as..
-Xlinker 
--end-group 

嗯。看起来-lrt已经在那里了,也许我没有librt.a?不,搜索所有文件会发现我有/usr/lib/x86_64-linux-gnu/librt.a。我猜g++找错地方了。因此,在上面的命令行中,我将-lrt替换为/usr/lib/x86_64-linux-gnu/librt.a t.a和bingo!它可以很好地编译和链接。不幸的是,这是一个自动化的工具,我需要它在许多计算机上工作,并且不能假设librt.a的位置,所以我真的需要它来与-lrt一起工作。那么如何设置本地库搜索路径呢?第一次尝试是更改LD_LIBRARY_PATH环境变量,但显然(从我从更多的googling搜索中可以看出),这在ubuntu上被忽略了,相反,我应该处理/etc/ld.so.conf.d/中的.conf文件,但是我已经使用了x86_64-linux-gnu.conf,其中有以下几行:

代码语言:javascript
复制
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

从我的阅读来看,这看起来应该是我所需要的一切。有点卡住了,下一步该怎么走……

EN

回答 1

Stack Overflow用户

发布于 2011-11-30 01:13:04

回答我自己的问题,以防其他人也有这个问题。事实证明链接的是正确的librt.a,但链接器对链接顺序非常敏感。将-lrt和-lpthread放在组的末尾可以解决这个问题。

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

https://stackoverflow.com/questions/8301600

复制
相关文章

相似问题

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