前文: https://www.cnblogs.com/odesey/p/18381407
1. jetson 和 x86 交叉编译
在 https://developer.nvidia.com/embedded/jetson-linux-r3541, 下载:Bootlin Toolchain gcc 9.3
解压得到,并创建文件夹:
/home/用户名/docker_workspace/mycrosscompile/Bootlin-Toolchain-gcc-9.3
在 mycrosscompile 创建一个文件夹 CrossCompileTest。
vim main.cpp
#include <iostream>
int main(int, char**) {
std::cout << "Hello, world!\n";
}
1.1 直接使用gcc指令编译c或者cpp文件
交叉编译工具使用的本质就是将原有 g++ 使用的x86_64-linux-gnu
指定为交叉工具里的aarch64-linux-gnu
。
(base) ➜ CrossCompileTest ../Bootlin-Toolchain-gcc-9.3/bin/aarch64-buildroot-linux-gnu-g++ main.cpp -o CCTest-straight
(base) ➜ CrossCompileTest ls
CCTest-straight main.cpp
(base) ➜ CrossCompileTest ./CCTest-straight
qemu-aarch64-static: Could not open '/lib/ld-linux-aarch64.so.1': No such file or directory
# 传输到 jetson 设备上面:
(base) ➜ CrossCompileTest scp CCTest-straight 用户名@ip地址:/ssd/workspace/
用户名@ip地址's password:
CCTest-straight 100% 9544 89.0KB/s 00:00
在 jetson 设备上:
用户名@ubuntu:/ssd/workspace$ ./CCTest-straight
Hello, world!
1.2 使用 cmake 编译
vim CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(CCTest VERSION 0.1.0)
add_executable(CCTest main.cpp)
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=/home/h/docker_workspace/mycrosscompile/Bootlin-Toolchain-gcc-9.3/share/buildroot/toolchainfile.cmake ..
make
ls
CCTest CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
# 传输到 jetson 设备上面:
(base) ➜ CrossCompileTest scp CCTest 用户名@ip地址:/ssd/workspace/
用户名@ip地址's password:
CCTest 100% 9544 89.0KB/s 00:00
在 jetson 设备上:
用户名@ubuntu:/ssd/workspace$ ./CCTest
Hello, world!