兩個版本,當我做我的程序與-larmadillo
,我得到它想要的這兩個版本的可執行文件:當我有一個共享庫,我的可執行文件正在尋找它的
$ ldd ./a.out | grep armadillo
$ libarmadillo.so.7 => /usr/lib/x86_64-linux-gnu/libarmadillo.so.7 (0x00007fd5e29a0000)
$ libarmadillo.so.4 => not found
任何人都可以點我正確的方向?這對我沒有任何意義!
背景:我最初安裝libarmadillo通過sudo apt-get install libarmadillo-dev
,然後我意識到我需要一個特定的參數(支持64個字)來構建它,所以我通過sudo apt-get remove libarmadillo-dev
卸載它,然後下載最新的版本,配置和品牌/使安裝它。據推測,我的系統上只有一個版本的libarmadillo - 我在平常的地方沒有看到任何舊圖書館。
感謝
編輯:
我的Makefile:
CC= g++
CFLAGS= -Lcontrib/armadillo-7.400.1 -L/usr/include -Lcontrib/mlpack-2.0.1/build/lib -fpermissive -std=c++11 -O0 -g -Wall
LDFLAGS= -lmlpack -larmadillo
LDD的詳細輸出有趣的是,我認爲?
$ ldd -v ./a.out | grep armadillo
$ libarmadillo.so.7 => /usr/lib/x86_64-linux-gnu/libarmadillo.so.7 (0x00007fd5e29a0000)
$ libarmadillo.so.4 => not found
$ /usr/lib/x86_64-linux-gnu/libarmadillo.so.7:
後者部分(其列出依賴性爲libarmadillo.so.7)是:
/usr/lib/x86_64-linux-gnu/libarmadillo.so.7:
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
有一個在詳細輸出,無「缺失」 libarmadillo.so.4提及其中我覺得很奇怪。
'a.out'是如何構建的?你的makefile和/或配置文件中有什麼? – wasthishelpful
使用g ++編譯對象:'CFLAGS = -Lcontrib/armadillo-7.400.1 -L/usr/include -fpermissive -std = C++ 11 -O0 -g -Wall'和'LFLAGS = -larmadillo'。我已將ldd的詳細輸出附加到問題中... – ricky116