linux - 在 Linux 上的 Hello_World 控制台应用程序中嵌入 V8 引擎 - GCC 7 链接器错误(未定义的引用)
问题描述
以下是详细信息:
主机/测试操作系统,工具链:
Linux Mint 19.3 Tricia (Ubuntu 18.04), GCC 7
V8 GN 构建参数:
is_debug=true
target_os="linux"
target_cpu="x64"
is_clang = false
is_component_build=false
use_glib=false
use_custom_libcxx = false
v8_static_library=true
v8_enable_i18n_support=false
v8_use_external_startup_data=false
v8 引擎构建成功,我得到了所有预期的静态库。然后我尝试构建 Hello_World 应用程序(在 v8 源代码中提供),与生成的静态 llib 链接。我收到以下链接错误:
/usr/bin/g++-7 -o ./build-Debug/bin/Hello_World @./build-Debug//ObjectsList.txt -L. -L../../out.gn/linux.x86_64.Debug -L../../out.gn/linux.x86_64.Debug/obj -L../../out.gn/linux.x86_64.Debug/obj/tools/debug_helper -L../../out.gn/linux.x86_64.Debug/obj/third_party/zlib -L../../out.gn/linux.x86_64.Debug/obj/third_party/zlib/google -lv8_libbase -lv8_libplatform -lv8_base_without_compiler -lv8_bigint -lv8_compiler_opt -lv8_compiler -lv8_cppgc_shared -lv8_debug_helper -lv8_init -lv8_initializers -lv8_snapshot -lchrome_zlib -ltorque_base -ltorque_ls_base -ltorque_generated_initializers -ltorque_generated_definitions -lwee8 -lcompression_utils_portable -lpthread
../../out.gn/linux.x86_64.Debug/obj/torque_generated_initializers/promise-misc-tq-csa.o: In function `v8::internal::PromiseInit_0(v8::internal::compiler::CodeAssemblerState*, v8::internal::TNode<v8::internal::JSPromise>)':
/media/hongkun/Windows/Users/hongkun/v8/v8/out.gn/linux.x86_64.Debug/gen/torque-generated/src/builtins/promise-misc-tq-csa.cc:297: undefined reference to `v8::internal::PromiseBuiltinsAssembler::ZeroOutEmbedderOffsets(v8::internal::TNode<v8::internal::JSPromise>)'
../../out.gn/linux.x86_64.Debug/obj/torque_generated_initializers/promise-misc-tq-csa.o: In function `v8::internal::InnerNewJSPromise_0(v8::internal::compiler::CodeAssemblerState*, v8::internal::TNode<v8::internal::Context>)':
/media/hongkun/Windows/Users/hongkun/v8/v8/out.gn/linux.x86_64.Debug/gen/torque-generated/src/builtins/promise-misc-tq-csa.cc:377: undefined reference to `v8::internal::PromiseBuiltinsAssembler::AllocateJSPromise(v8::internal::TNode<v8::internal::Context>)'
../../out.gn/linux.x86_64.Debug/obj/torque_generated_initializers/promise-misc-tq-csa.o: In function `v8::internal::NewJSPromise_2(v8::internal::compiler::CodeAssemblerState*, v8::internal::TNode<v8::internal::Context>, v8::Promise::PromiseState, v8::internal::TNode<v8::internal::Object>)':
/media/hongkun/Windows/Users/hongkun/v8/v8/out.gn/linux.x86_64.Debug/gen/torque-generated/src/builtins/promise-misc-tq-csa.cc:1143: undefined reference to `v8::internal::PromiseBuiltinsAssembler::ZeroOutEmbedderOffsets(v8::internal::TNode<v8::internal::JSPromise>)'
显然,链接器在任何提供的库中都找不到类v8::internal::PromiseBuiltinsAssembler 。我在链接器选项中添加了所有生成的 v8 库。我该如何解决这个错误?感谢您的任何建议。
解决方案
既不PromiseBuiltinsAssembler
也不promise-misc-tq-csa.o
应该进入最终的二进制文件,两者都仅供mksnapshot
.
您是否尝试过遵循官方文档?
推荐阅读
- facebook - 通过 APP 广告帐户在经过身份验证的用户的帖子上增加帖子或创建广告
- sql - 如何更正此代码?我正在尝试根据案例获取日期函数
- spring - 我们可以在一个事务下在 DynamoDB 中保留两个不同的表实体吗
- java - 向 mikrotik 客户端发送配置文件更改命令时出错
- java - 如何实现单个 JUnit 测试用例之间的公共数据共享
- java - Java中的ISO 9797-1 MAC算法3和填充方法1示例?
- celery-task - 使用 celery Group 时如何在子任务实例中获取组 ID?
- sql-server - MSSQL:查询表中所有数据子集的可重用方式
- javascript - 使用 __mocks__ 手动模拟不起作用
- python - Python 谷歌登录用户通过 BeautifulSoup Post