今天在写V8的demo时出现了一个问题,根据V8 document的命令:
g++ -Iinclude hello_world.cpp -o hello_world libv8.a -lpthread
无法编译和链接成功,试了半天,搞清楚了些东西。
编译时
-I:告诉编译器在指定文件夹搜索头文件
-L:告诉链接器在指定文件夹中搜索库文件
-lxxx:会解析成libxxx.so
编译后
ldd xxx:查看可执行文件的动态文件依赖
ldconfig:可查看当前环境可找到的库文件
为让编译后的文件能找到动态库文件,有如下方法可以做到:
1.将库文件libxxx.so拷贝到/usr/lib 或 /lib 或 /usr/local/lib下,默认情况,系统从这几个地方寻找库文件。
2. export LD_LIBRARY_PATH=/apps/src/demo/ 如果有多条路径,用“:”分割。
3. 将库文件的路径添加到/etc/ld.so.conf.d/中去,然后执行ldconfig。
4.编译时指定动态库的绝对路径。