emscripten

本文记录了在使用CMake 2.8.3进行编译配置过程中遇到的问题,包括找不到合适的C++编译器及尝试安装gcc-c++失败的情况,并展示了编译过程中出现的错误,如链接失败等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

timan@timan-Rev-1-0:~/Downloads/cmake-2.8.3$ ./bootstrap 
---------------------------------------------
CMake 2.8.3, Copyright 2000-2009 Kitware, Inc.
C compiler on this system is: cc 
---------------------------------------------
Error when bootstrapping CMake:
Cannot find appropriate C++ compiler on this system.
Please specify one using environment variable CXX.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------
Log of errors: /home/timan/Downloads/cmake-2.8.3/Bootstrap.cmk/cmake_bootstrap.log
---------------------------------------------
timan@timan-Rev-1-0:~/Downloads/cmake-2.8.3$ sudo apt-get install gcc-c++
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gcc-c+
E: Couldn't find any package by regex 'gcc-c+'
timan@timan-Rev-1-0:~/Downloads/cmake-2.8.3$ sudo apt-get install gcc-c++

why?



sudo apt-get build-essential g++


2.

/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libLTO.so] Error 1
make[1]: *** [tools/lto/CMakeFiles/LTO.dir/all] Error 2
make: *** [all] Error 2
Build failed due to exception!
Working directory: /home/qiaocy/Desktop/emsdk_portable/clang/fastcomp/build_master_64
Command '['make', '-j1']' returned non-zero exit status 2
Installation failed!


### 使用 Emscripten 编译 C/C++ 到 WebAssembly 为了将新的代码模块从像 C/C++ 这样的语言编译成 WebAssembly,可以利用工具如 Emscripten 来完成此过程[^1]。Emscripten 是一个强大的 LLVM/Clang 前端工具链,能够把标准的 C 或者 C++ 代码转换为可以在浏览器环境中运行的 WebAssembly。 #### 安装 Emscripten 工具链 安装 Emscripten 的最简单方法是通过官方提供的 SDK (emsdk),它可以帮助管理不同版本的 Emscripten 和其他依赖项。以下是设置环境的一个基本指南: ```bash git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest ./emsdk activate latest source ./emsdk_env.sh ``` 这组命令会下载并激活最新的 Emscripten 版本,并配置 shell 环境以便可以直接调用 `emcc` —— 即 Emscripten 编译器前端。 #### 编写简单的 C++ 文件 创建名为 `hello.cpp` 的文件,其内容如下所示: ```cpp #include <iostream> int main() { std::cout << "Hello, WebAssembly!" << std::endl; return 0; } ``` #### 编译到 WebAssembly 使用 Emscripten 编译上述程序至 WebAssembly 需要执行下面这条指令: ```bash emcc hello.cpp -o hello.html -s WASM=1 --bind ``` 这里 `-o hello.html` 表示输出 HTML 文件名;`-s WASM=1` 参数指定生成 WebAssembly 输出而不是 asm.js;而 `--bind` 开关允许 JavaScript 绑定自动生成,使得可以从网页脚本轻松访问导出的功能。 #### 测试结果 一旦编译成功,在同一目录下将会得到三个主要文件:`.wasm`, `.js` 及 `.html`。打开生成的 HTML 文件即可在支持 WebAssembly 的现代浏览器中查看效果。 对于更复杂的项目结构或是希望启用某些特定的语言特性时,则可能还需要额外传递一些参数给编译器,比如使用 `--std=c++11` 启用 C++11 功能[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值