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

Gcc 如何为g+;的64位库设置库搜索路径+;在Ubuntu中?,gcc,ubuntu,linker,64-bit,Gcc,Ubuntu,Linker,64 Bit,正在尝试使用Ubuntu为64位unix编译一些东西。作为免责声明,我几天前才开始使用linux和gcc,所以我仍然在学习。无论如何,获取以下错误: /home/myuser/myproject/myfile.cpp:437:对“clock\u gettime”的未定义引用 一个快速的谷歌显示我需要-lrt选项来链接librt.A。所以我检查我的命令行(格式化为可读性,不同的文件名,并且我已经删除了文件名列表): 嗯,看起来轻铁已经在那里了,也许我没有librt.a?不,搜索所有文件显示我有/u

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

/home/myuser/myproject/myfile.cpp:437:对“clock\u gettime”的未定义引用

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

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

# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

从我读到这一点来看,这应该是我所需要的。有点纠结于从这里走到哪里…

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

# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu