嘗試使用Ubuntu爲64位unix編譯一些東西。作爲一個聲明,我幾天前纔開始使用linux和gcc,所以仍然在學習我的方式。無論如何,得到了以下錯誤:如何在Ubuntu中爲g ++設置64位庫的庫搜索路徑?
/home/myuser/myproject/myfile.cpp:437:未定義的引用`clock_gettime」
快速谷歌顯示我需要-lrt選項與librt.a鏈接。所以,檢查我的命令行(格式化的可讀性,不同的文件名,我已經刪除的文件名列表):
/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 ++看着錯誤的地方。所以在上面的命令行中,我用/usr/lib/x86_64-linux-gnu/librt.a和bingo替換了-lrt!它編譯和鏈接罰款。不幸的是,這是一個自動化的工具,我需要在很多計算機上工作,並且不能對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
從我讀了這一點,它看起來這應該是我所需要的。那種堅持到哪裏去...