通过g ++编译将.so文件链接到.cpp文件
我正在尝试让一个库在我的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
选项的显式命名文件(即just)进行链接directory/libtest.so
,但是对于动态库,这几乎总是错误的做法,因为它将确切的路径嵌入到可执行文件中,因此同一库必须位于同一位置程序运行时。通常,您想按名称(而不是路径)链接到它,以便可以在运行时从任何位置使用具有该名称的库。
以上是 通过g ++编译将.so文件链接到.cpp文件 的全部内容, 来源链接: utcz.com/qa/421096.html