tx2需要另一台linux的主机嘛,TX2在x86(ubuntu64位)下交叉编译

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

效果如下图:

f81d3d2be76abe279e2a6f8c6876b129.png

之后更新刚刚修改的bash或zsh使得export 生效

8.在终端输入

$ make

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

由于厂家说:源码不能提供,工程已删除所有核心代码,保留了VCI_OpenDevice函数。交叉编译后生成的.so文件,可以正常调用VCI_OpenDevice函数,并返回成功值1.供测试使用。

所以将程序修改为只有VCI_OpenDevice的程序:

2117b7475a30cb2e93b9d634cca6ee75.png

之后在TX2下面最终调用成功:

e97e1d0d6a94772e58249c2fe9c45da2.png

TX2在x86(ubuntu64位)下交叉编译相关教程

Jetson TX2(2)ubutu1604--安装opencv3.4.0

Jetson TX2(2)ubutu1604--安装opencv3.4.0 1安装OpenCV3.4.0+contrib 1 在终端中敲入以下两句 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo apt-get update 进入官网 : http://opencv.org/releases.html , 选择 3.4.0 版本的 sou

80x86汇编按二进制输出数字的程序图解和代码解释

80x86汇编按二进制输出数字的程序图解和代码解释 先运行一下; 按二进制输出了十六进制的07h; 十六进制07, 转换为二进制是 111;4 + 2 + 1 = 7; ; print result in binary:mov bl, 09hmov cx, 8print: mov ah, 2 mov dl, '0' test bl, 10000000b; test firs

RTX2080和RTX2080Super的区别

RTX2080和RTX2080Super的区别 RTX2080 Super相比RTX2080性能提升差距约5%-6%左右,提升并不是太明显 选RTX2080还是RTX2080Super这些点很重要!看完你就知道了 https://list.jd.com/list.html? RTX2080 Super在规格上有着进一步的提升,主要在核心、流处理器、

ubuntu1604 qmakecould not exec ‘/usr/lib/x86_64-linux-gnu/q

ubuntu1604: qmake:could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake‘:No such file or directory 命令行使用qmake时,出现错误 qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory 解决方法: 1.cat /

Arm发布全新服务器芯片及路线图进一步叫板X86

Arm发布全新服务器芯片及路线图,进一步叫板X86 来源:内容编译自「anandtech」,谢谢。 Arm对服务器市场拥有巨大的野心是一件众所周知的事实,但这是需要历经数年才得以实现的愿望。过去多年里,虽然Arm阵营经过许多怀疑和错误的尝试,但到2020年的今天,没

浅论Lock 与X86 Cache 一致性

浅论Lock 与X86 Cache 一致性 本文转载自:https://zhuanlan.zhihu.com/p/24146167 感谢James Zhang 师兄多年前对我的鞭策, 只是这篇文章写的晚了些, 十二年已然过去. 重温一下 CAS 操作的伪码 bool compare_and_swap (int *accum, int *dest, int newval){ i

在Ubuntu64位系统下安装mysql数据库

在Ubuntu64位系统下安装mysql数据库 每日一句英语 The secret of success in life is for a man to be ready for his opportunity when it comes. 人生成功的秘诀是当机遇来临时要及时地抓住它。 输入命令尝试打开mysql sudo service mysql start 如果是这样

为什么早期x86处理器寄存器很少

为什么早期x86处理器寄存器很少? 有读者在看我之前的关于16位系统上的调用约定的文章时,有这么一个问题:为什么在早期x86处理器上可用的寄存器为什么那么少? 8086是一款16位的微处理器,比它更早的是8080。它有6个8位寄存器,分别命名为:A, B, C, D, E,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jetson TX2是一种强大的嵌入式计算平台,在进行交叉编译时可以简化软件开发的过程。交叉编译是指在一台主机上编写并构建适用于其他不同硬件平台的软件。 要在Jetson TX2上进行交叉编译,首先需要主机上安装相应的交叉编译工具链。这个工具链包含了用于生成针对Jetson TX2的二进制可执行文件所需的编译器、链接器和其他必要的工具。通常可以从官方网站或开发者社区获得Jetson TX2专用的交叉编译工具链。 安装好交叉编译工具链后,就可以开始编写和构建软件了。首先,在主机上编写源代码或修改现有的代码。接下来,使用交叉编译工具链中的编译器将源代码编译成适用于Jetson TX2的目标二进制文件。可以通过指定适当的目标平台和编译选项来确保生成的二进制文件可以在Jetson TX2上运行。 在编译过程中,可能需要包含Jetson TX2特定的库和头文件。这些库和头文件可以通过Jetson TX2专用的软件开发工具包(SDK)或其他渠道进行获取。确保将这些依赖项正确地配置到编译过程中,以确保生成的二进制文件能够与Jetson TX2上的其他组件正确地交互。 完成编译后,可以将生成的二进制文件将其复制到Jetson TX2上进行测试和部署。在Jetson TX2上设置正确的运行环境,以确保可以正常运行交叉编译的软件。 总之,交叉编译是一种方便而高效的方法,可以在主机上轻松开发和测试适用于嵌入式平台如Jetson TX2的软件。通过使用适当的工具链和依赖项,可以确保生成的二进制文件能够在Jetson TX2上稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值