我想获得一个图书馆工作在我的c + +项目,并没有明确的指示,如何做到这一点的人不习惯c + +
以下的链接是最接近我来了
它指出以下内容
-L/path/to/my/library/folder -ldllname
下面的线程也声明如下
gcc yourfile.cpp -lblah
现在从我能看到的命令是-l
+ filename
,例如我的文件名是directory/libtest.so
它将是-ldirectory/libtest.so
,这是正确的,有人可以澄清
我目前使用下面的命令来编译我的maincpp.cpp
文件,但是想包含一个.so文件,例如./directory/libtest.so
g++ -fPIC -o libgetmacip.so -shared -I $JAVA_HOME/include -I $JAVA_HOME/include/linux maincpp.cpp cpptoinclude.cpp
现在从我可以看到的命令是
-l + filename
,例如我的文件名是directory/libtest.so
它将是-ldirectory/libtest.so
不,这是不正确的。 它应该是-Ldirectory -ltest
即你使用-L
来添加一个目录到链接器将要查找库的搜索路径,并且你说哪个库链接到-l
,但是链接到libtest.so
或者libtest.a
你说-ltest
没有lib
前缀或文件扩展名。
您可以通过显式命名文件进行链接,而不需要-L
或-l
选项,即只是directory/libtest.so
,但是对于动态库来说,几乎总是做错的事情,因为它将确切的路径嵌入到可执行文件中,所以程序运行时,同一个库必须在同一个地方。 您通常希望通过名称(而不是路径)链接到它,以便可以在运行时从任何位置使用具有该名称的库。