TX2在x86(ubuntu64位)下交叉编译

**

TX2在x86(ubuntu64位)下交叉编译

**
用TX2做小车底盘控制(采用usb转can方式),厂家不提供源码,只能提供对应版本的SDK,但是需要我们自己提供交叉编译器

由于之前没有做过交叉编译相关工作,对编译工具不太了解,因此查找相关资料学习下。
参考网站:https://blog.csdn.net/zong596568821xp/article/details/81101772
交叉编译知识
一般来说,针对嵌入式平台的开发有两种编译模式:原生编译和交叉编译。原生编译就是直接在嵌入式平台上编译代码并运行,而交叉编译就是在个人电脑等平台编译代码,然后加载到嵌入式平台运行。

要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下:

1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

TX2内置的编译器是aarch64-linux-gnu-gcc 5.4.0,在linaro官网找到对应的版本,因为主机是x86的64位linux平台,所以选择下载gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu.tar,官网如果下载不动,可在CSDN上下载。
官网地址:https://releases.linaro.org/components/toolchain/binaries/5.4-2017.05/aarch64-linux-gnu/
CSDN地址:https://download.csdn.net/download/xiaofengxing1/10445361

4.之后解压:

$ tar -xvf gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu.tar.xz

5.,将解压后的gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu复制到opt文件夹下:

$ sudo cp -r gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu /opt/

效果如下图:

6.在bashrc(我是zshrc)里面添加:
export PATH=$PATH:/opt/gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu/bin
export CROSS_COMPILE=aarch64-linux-gnu-

7.之后在商家给的lib里面打开,修改makefile文件:
将商家给的:

dynamiclib:
arm-linux-gnueabihf-gcc -I ./libusb-0.1.12 VCI_CAN.c ./libusb-0.1.12/usb.c ./libusb-0.1.12/linux.c ./libusb-0.1.12/error.c ./libusb-0.1.12/descriptors.c -fPIC -shared -o libcontrolcan.so

变成:

dynamiclib:
	aarch64-linux-gnu-gcc -I /libusb-0.1.12 VCI_CAN.c ./libusb-0.1.12/usb.c ./libusb-0.1.12/linux.c ./libusb-0.1.12/error.c ./libusb-0.1.12/descriptors.c -fPIC -shared -o libcontrolcan.so

效果如下图:
在这里插入图片描述
之后更新刚刚修改的bash或zsh使得export 生效
8.在终端输入

$ make 

就可以看到生成的 .so文件了。之后将 .so文件丢给TX2下相应文件。

由于厂家说:源码不能提供,工程已删除所有核心代码,保留了VCI_OpenDevice函数。交叉编译后生成的.so文件,可以正常调用VCI_OpenDevice函数,并返回成功值1.供测试使用。
所以将程序修改为只有VCI_OpenDevice的程序:
在这里插入图片描述
之后在TX2下面最终调用成功:

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值