我构建并安装了spidermonkey的源代码,我想用我的C ++应用程序链接它的库及其include文件夹,所以我在linux上编写了这个命令
g++ -I/home/SpiderMonkey/js-1.8.5/js/src/dist/include
-L/home/SpiderMonkey/js1.8.5/js/src/dist/lib -lmozjs185 helloworld.cpp -o
但是它给了我未定义的引用错误,所以这个命令有什么问题: 构建src代码的路径是home / SpiderMonkey / js1.8.5 / src 当我安装src代码时,它的libs和include文件夹现在分别存在于usr / local / lib和usr / local / include / js中,所以我应该在命令中使用哪条路径来编译我的hellowrorld.cpp。 另外,我找到了3个名称相同但扩展名不同的库:
libname.so, libname.so.1.0, libname.so.1.0.0 and libname.a
我应该使用哪个库,有什么区别?
答案 0 :(得分:1)
在 main.cpp
之后将库放在编译命令上。链接器根据已经看到的对象(从左到右)确定从这些库中提取哪些符号。
关于你的附录问题:
libname.a
用于静态链接。
libname.so
,libname.so.1.0
和libname.so.1.0.0
都是相同的文件,只是名称可以提供更高级别的版本信息粒度。
使用哪种方式超出了本答案的范围,但您可以找到有关网络上已存在的大量信息。