Google V8编译
作者:互联网
一、编译环境
最初是用centos7 镜像docker下,进行,最终总是有一个文件编译失败,并且未报明显的错误。
后转用
VMware + ubuntu-16.04.3-desktop-amd64
二、可以直接使用的lib库
如果不想去感受繁琐的编译过程,
可以尝试直接使用,附件中,我编译好的lib库
请查看附件:Googelv8(include+libs).zip
三、编译步骤
1、安装depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=/path/to/depot_tools:$PATH
2、下载V8代码
https://v8.dev/docs/source-code#using-git
fetch v8
3、编译静态库
Create a build configuration using the helper script:
tools/dev/v8gen.py x64.release.sample
You can inspect and manually edit the build configuration by running:
gn args out.gn/x64.release.sample
Build the static library on a Linux 64 system:
ninja -C out.gn/x64.release.sample v8_monolith
4、编译sample代码
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -lv8_monolith -Lout.gn/x64.release.sample/obj/ -pthread -std=c++14 -DV8_COMPRESS_POINTERS
执行结果:
obamayang@obamayang-virtual-machine:~/workspace/v8$ ./hello_world
Hello, World!
3 + 4 = 7
四、一些编译帮助
1、 GLIBC_2.18 not found 问题
strings /usr/lib64/libc.so.6 | grep GLIBC_2.1
wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4
make install
2、 GLIBCXX_3.4.26’ not found问题
根据提示查看对应的路径
strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
发现缺少需要的3.4.26,3.4.20,3.4.21版本
查看当前系统中所有libstdc++.so的位置,发现当前最新的动态库为libstdc++.so.6.0.27
sudo find / -name "libstdc++.so*"
将新版本动态库复制到/usr/lib64中(注意自己libstdc++.so.6.0.xx的路径)
cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.27 /usr/lib64
删除老版本动态库(以下操作在/usr/lib64目录下)
sudo rm -rf libstdc++.so.6
建立新链接(权限不够加上sudo)
ln -s libstdc++.so.6.0.27 libstdc++.so.6
再次查看当前动态库版本
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
标签:libstd,Google,c++,编译,usr,so.6,V8,tools 来源: https://blog.csdn.net/shenshanhongye/article/details/115298826