我試圖將我的程序鏈接到共享庫。我使用makefile來編譯。它看起來像這樣:`共享庫,makefile。庫路徑
make: sms_out.cpp SMSDispatch.cpp SMSDispatch.h
g++ -c -fPIC SMSDispatch.cpp -o SMSDispatch.o
g++ -shared SMSDispatch.o -o libSMSDispatch.so
` g++ sms_out.cpp -L. -lSMSDispatch -o sms_out
,如果我在命令窗口中運行該程序,它工作正常:
LD_LIBRARY_PATH="." ./sms_out
但我只想與./sms_out
運行它,有人可以幫我嗎? 試圖將export LD_LIBRARY_PATH=.
添加到生成文件,但沒有工作,只是當我嘗試運行程序時,收到錯誤「加載共享庫時出錯:libSMSDispatch.so:無法打開共享目標文件:沒有這樣的文件或目錄」。
我想告訴正在運行的程序庫,它正在查找的庫位於Im文件夾中,也是「。」,它可以很好地與LD_LIBRARY_PATH =工作。 。/ sms_out',或者在運行程序之前使用'export LD_LIBRARY_PATH = .'。但是,如果我嘗試將'export LD_LIBRARY_PATH = .'添加到makefile,那麼在調用makefile之後嘗試運行該程序時,它並不起作用。你知道爲什麼嗎? – Veronic 2012-04-02 12:41:44
運行makefile後檢查'LD_LIBRARY_PATH'的值:不能像'export'這樣的變量,'export'只會影響運行腳本的進程。我不知道從makefile修改環境變量的方法(這不是說一個機制不存在,我只是不知道其中的一個)。如果你有一個包含'export'語句的腳本,你可以通過調用它來改變環境,如:'$。 。/ myexport.sh' – hmjd 2012-04-02 12:45:37
好的,但我可以把導出語句放入我想運行的文件(sms_out.cpp)嗎?順便說一句,運行makefile後LD_LIBRARY_PATH的值爲空白,在我運行之前我認爲它是空白的 – Veronic 2012-04-02 13:01:38