c – 通过g编译将.so文件链接到.cpp文件

我正在尝试让一个库在我的c项目中工作,并且没有明确的说明如何为那些不习惯c的人这样做

以下link是我最接近的

它陈述如下

-L/path/to/my/library/folder -ldllname

以下thread也说明如下

gcc yourfile.cpp -lblah

现在从我所看到的命令是-l filename,例如我的文件名是目录/ libtest.so它将是-ldirectory / libtest.so,这是正确的,有人可以澄清

我目前正在使用以下命令编译我的maincpp.cpp文件,但是想包含一个名为./directory/libtest.so的.so文件.

g++ -fPIC -o libgetmacip.so -shared -I $JAVA_HOME/include -I $JAVA_HOME/include/linux maincpp.cpp cpptoinclude.cpp
最佳答案

now from what i can see the command is -l + filename, for example my filename is directory/libtest.so it would be -ldirectory/libtest.so

不,那不对.它应该是-Ldirectory -ltest,即你使用-L将目录添加到链接器将查找库的搜索路径,并说明要链接到-l的库,但链接到libtest.so或libtest.你说-ltest没有lib前缀或文件扩展名.

您可以通过显式命名文件来链接,不使用-L或-l选项,即只是目录/ libtest.so,但对于动态库来说,这几乎总是错误的事情,因为它将确切的路径嵌入到可执行文件中,所以程序运行时,同一个库必须在同一个地方.您通常希望按名称(而不是路径)链接到它,以便可以在运行时从任何位置使用具有该名称的库.

转载注明原文:c – 通过g编译将.so文件链接到.cpp文件 - 代码日志