我正忙着尝试使用以下make文件编译和链接c ++程序
driver.so:driver.cpp
g++ -c driver.cpp -o driver.so
g++ -L/tokenlib/libtokenlib.so driver.so -o linked
但是我收到了错误
g++ -c driver.cpp -o driver.so
g++ -L/tokenlib/libtokenlib.so driver.so -o linked
driver.so: In function `main':
driver.cpp:(.text+0x9): undefined reference to `tokenlib::acquire_token()'
collect2: error: ld returned 1 exit status
make: *** [driver.so] Error 1
我的文件层次结构是
/root
makefile
driver.cpp
/tokenlib
libtokenlib.so
我被告知在我的g ++争论中添加-Wl,-rpath =。/ tokenlib会解决问题,所以我尝试了这个
driver.so:driver.cpp
g++ -c driver.cpp -o driver.so -Wl,-rpath=./tokenlib
g++ -L/tokenlib/libtokenlib.so driver.so -o linked -Wl,-rpath=./tokenlib
但它仍无效。
我是一个完整的新手,任何帮助将不胜感激。
答案 0 :(得分:0)
链接器通常引用.a
(存根)库,而不引用.so
文件!
-L
选项指定路径,lnker应考虑到这些路径
-l<mystuff>
选项尝试从libmystuff.a
选项的任何给定路径或编译器内部库搜索路径中解析名为-L
的库。