我正在尝试让一个库在我的c 项目中工作,并且对于不习惯c 的人没有明确的说明
以下链接是我最近来的
它指出以下
-L/path/to/my/library/folder -ldllname
还有以下线程指出以下内容
gcc yourfile.cpp -lblah
现在从我可以看到的命令是-l+ filename,例如我的文件名是,directory/libtest.so这-ldirectory/libtest.so是正确的,有人可以澄清一下吗
-l
filename
directory/libtest.so
-ldirectory/libtest.so
我目前正在使用以下命令来编译我的maincpp.cpp文件,但是想包含一个名为.so的文件,例如./directory/libtest.so
maincpp.cpp
./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
-l + filename
不,那是不正确的。应该是,-Ldirectory -ltest即您-L用来将目录添加到链接器将在其中查找库的搜索路径,并说出要使用链接到的库-l,但是要链接到libtest.so或libtest.a说-ltest没有lib前缀或文件扩展名。
-Ldirectory -ltest
-L
libtest.so
libtest.a
-ltest
lib
您 可以 通过不带-L或-l选项的显式命名文件(即just)进行链接directory/libtest.so,但是对于动态库,这几乎总是错误的做法,因为它将确切的路径嵌入到可执行文件中,因此同一库必须位于同一位置程序运行时。通常,您想按名称(而不是路径)链接到它,以便可以在运行时从任何位置使用具有该名称的库。