我是一名計算機科學專業的第一年級學生,其課程涉及(其中包括)Makefiles課程。對於我們的第一個任務,我們必須創建一個共享庫並鏈接它。具體的「無法打開共享目標文件」錯誤
我具有以下設置:
- 的文件夾
hw1
包含的文件夾和app
lib
。 - Inside
lib
是一個名爲libmine.so
的文件,我想鏈接到的庫。 - Inside
app
,有兩個文件:test.cpp
和Makefile
。前者使用libmine
庫。
的Makefile
如下(文件本身,壓痕等是正確的):
all: test
test: test.cpp
g++ -Wall -o test -L../lib -I../lib/include test.cpp -lmine
然而,當運行test
,我得到了臭名昭著的`libmine.so:無法打開共享對象文件'錯誤。
我相信這跟出口LD_LIBRARY_PATH
有關。我試過這樣做(export LD_LIBRARY_PATH=$[very long relative path to the lib folder]
),但我想在我的Makefile
中這樣做。另外,我不希望路徑是相對的,因爲我的教師應該能夠在將文件發送給他時打開文件(所以我認爲它應該是類似於../lib/libmine.so
)。
我查看了各種StackOverflow帖子,如this one,但似乎沒有人回答這個具體問題(要麼是不同的設置,要麼解決方案根本不起作用)。順便說一句:將export LD_LIBRARY_PATH=../lib
行test: test.cpp
之下,並且g++
命令之前沒有做任何事情。
任何幫助是非常讚賞:)
只要是明確的,那就是不完整的錯誤消息,當您嘗試執行'test',而不是當你執行make出現的錯誤信息和*構建*' test'。那是對的嗎?你是否通過不同的方式獲得'test'來運行,例如通過在當前目錄中有'libmine.so'? – Beta
是的,這是正確的。問題是在* runtime *找不到庫。 – limitIntegral314