交叉编译工具安装

FROM:http://blogold.chinaunix.net/u3/104564/showart_2091186.html

一、安装交叉编译器 
1)交叉编译器使用CodeSourcery提供的符合EABI标准的arm-none-linux-gnueabi-gcc-4.3.3交叉编译器,下载地址: 
http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 

2)下载后,解压到/opt/目录: 
# tar jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /opt/ 

有时下载下来是tgz格式的,这时我们必须先用gzip -d解压成tar的格式,再用tar -xvf 来解压。
3)因为/opt/arm-2009q1/bin/目录中的可执行文件均以不常用的" arm-none-linux-gnueabi- "开头,做几个arm-linux-xxx软链接以方便日后使用:

ln -s arm-none-linux-gnueabi-gcc arm-linux-gcc

ln -s arm-none-linux-gnueabi-gdbtui arm-linux-gdbtui 
ln -s arm-none-linux-gnueabi-addr2line arm-linux-addr2line 
ln -s arm-none-linux-gnueabi-gprof arm-linux-gprof 
ln -s arm-none-linux-gnueabi-ar arm-linux-ar 
ln -s arm-none-linux-gnueabi-as arm-linux-as 
ln -s arm-none-linux-gnueabi-nm arm-linux-nm 
ln -s arm-none-linux-gnueabi-ld arm-linux-ld 
ln -s arm-none-linux-gnueabi-c++ arm-linux-c++ 
ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy 
ln -s arm-none-linux-gnueabi-c++filt arm-linux-c++filt 
ln -s arm-none-linux-gnueabi-cpp arm-linux-cpp 
ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib 
ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump 
ln -s arm-none-linux-gnueabi-readelf arm-linux-readelf 
ln -s arm-none-linux-gnueabi-size arm-linux-size 
ln -s arm-none-linux-gnueabi-gcov arm-linux-gcov 
ln -s arm-none-linux-gnueabi-strings arm-linux-strings 
ln -s arm-none-linux-gnueabi-gdb arm-linux-gdb 
ln -s arm-none-linux-gnueabi-strip arm-linux-strip 
ln -s arm-none-linux-gnueabi-sprite arm-linux-sprite

如果不作这个连接,如用arm-linux-去编译,会出现

exec: arm-none-linux-gnueabi-gcc: not found。

当然也可能用 arm-none-linux-gnueabi-来编译。

4)同时在/opt/arm-2009q1/bin/目录建立如下三个脚本: 
脚本arm-linux-g++的内容:

#!/bin/sh 
arm-none-linux-gnueabi-g++ -march=armv4t $*

脚本arm-linux-gcc的内容:

#!/bin/sh 
arm-none-linux-gnueabi-gcc -march=armv4t $*

脚本arm-linux-gcc-4.3.3的内容:

#!/bin/sh 
arm-none-linux-gnueabi-gcc-4.3.3 -march=armv4t $*

5)为以上三个脚本加上可执行属性: 
# chmod +x arm-linux-g++ 
# chmod +x arm-linux-gcc 
# chmod +x arm-linux-gcc-4.3.3 
6)输出交叉编译器的可执行文件的路径到PATH环境变量: 
# export PATH=/opt/arm-2009q1/bin:$PATH 

或者也可以把编译路径直接加到/etc/profile文件,这样在系统启动时,就不用输入上在的命令了。
以后要用到arm-linux-gcc-4.3.3交叉编译器时都应该先在终端上执行上面一句! 
7)查看是否安装成功: 
# arm-linux-gcc -v 
如果成功的话,可以看到如下信息:

Using built-in specs. 
Target: arm-none-linux-gnueabi 
Configured with: /scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/src/gcc-4.3/configure --build=i686-pc-linux-gnu--host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch--with-gnu-as --with-gnu-ld --with-specs='%{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}'--enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2009q1-203'--with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery--with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc--with-build-sysroot=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/install/arm-none-linux-gnueabi/libc--with-gmp=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/obj/host-libs-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr--with-mpfr=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/obj/host-libs-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr--disable-libgomp --enable-poison-system-directories--with-build-time-tools=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/install/arm-none-linux-gnueabi/bin--with-build-time-tools=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/install/arm-none-linux-gnueabi/bin 
Thread model: posix 
gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203)

### 开发板上使用交叉编译工具安装配置 OpenCV 为了在开发板上成功部署并运行基于 OpenCV 的应用程序,采用交叉编译的方式是必要的。具体来说,由于开发板内存有限且仅需提供可执行文件给协同开发者,因此推荐将 OpenCV 编译为静态库形式[^1]。 #### 安装 RV1126 交叉编译工具链 首先需要确保 Ubuntu 上已经正确安装了针对 RV1126 平台的交叉编译工具链。这一步骤对于后续能够顺利构建适用于该平台的应用至关重要[^4]。 #### 准备 OpenCV 源码包 下载所需的 OpenCV 版本源代码压缩包,并解压至工作目录下准备进行下一步处理。注意选择适合项目需求的具体版本号,比如 opencv-2.4.9 或者 opencv3.4.8 等不同版本均可考虑[^3]。 #### 创建 CMakeLists.txt 文件用于交叉编译设置 编写专门用于描述如何构建项目的 `CMakeLists.txt` 文件是非常重要的。此文件应指定目标架构以及所使用的交叉编译器路径等信息。下面是一个简单的例子来说明如何定义这些参数: ```cmake set(CMAKE_SYSTEM_NAME Linux) set(TOOLCHAIN_PREFIX arm-linux-gnueabihf) # 设置编译器 set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) # 查找依赖项的位置(如果有的话) set(OPENSSL_ROOT_DIR /path/to/openssl/arm) set(ZLIB_INCLUDE_DIRS /path/to/zlib/include) set(ZLIB_LIBRARY /path/to/zlib/libz.a) include_directories(${ZLIB_INCLUDE_DIRS}) link_libraries(${ZLIB_LIBRARY}) add_subdirectory(opencv_source_directory) ``` 上述脚本中的变量 `${TOOLCHAIN_PREFIX}` 应替换为你实际使用的前缀名称;而 `/path/to/*` 则代表相应第三方库所在位置,请根据实际情况调整路径[^2]。 #### 构建静态链接版 OpenCV 库 完成以上准备工作之后就可以调用 cmake 命令来进行最终的编译过程了。建议创建一个新的 build 目录以保持原生源码整洁不变动: ```bash mkdir -p build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DWITH_QT=ON \ -DOPENCV_EXTRA_MODULES_PATH=/path/to/contrib/modules/ make -j$(nproc) ``` 这里 `-DBUILD_SHARED_LIBS=OFF` 参数指定了只生成静态库而非共享动态库,从而使得最后得到的二进制文件可以直接独立于任何外部依赖而在目标平台上正常运作。 #### 将编译好的程序上传到开发板测试 当所有步骤都顺利完成以后,可以利用诸如 scp 工具把生成的目标文件传输到远程设备上去验证其功能是否满足预期要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值