我试图将我的程序链接到共享库。我使用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