usb_modeswitch移植

  • 交叉工具链安装
  • 交叉编译安装libsub库
  • 交叉编译安装lib-compat-x.x.x
  • 交叉编译安装usb_modeswitch

交叉编译工具链

为了使编译的程序可以在嵌入式开发板上运行,需要使用交叉编译链进行编译。交叉工具链可以直接下载二进制来用,下载linaro-arm-linux-gnueabihf。交叉工具链放在“~/BBB/toolchain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf”的地方,将arm-linux-gnueabihf-gcc所在目录加入环境变量,即可直接使用arm-linux-gnueabihf-gcc进行交叉编译。交叉编译链配置成功后,可以用 “arm-linux-gnueabihf-gcc -v” 命令查看交叉编译工具的信息。

$ arm-linux-gnueabihf-gcc -v

Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/gexin/BBB/toolchain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/6.2.1/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/snapshots/gcc-linaro-6.2-2016.11/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap --with-cloog=no --with-ppl=no --with-isl=no --disable-nls --enable-c99 --enable-gnu-indirect-function --disable-multilib --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-multiarch --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/sysroots/arm-linux-gnueabihf --enable-lto --enable-linker-build-id --enable-long-long --enable-shared --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran,lto --enable-checking=release --disable-bootstrap --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: posix
gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11)

下载软件源码

  1. mkdir USB-4G && cd USB-4G 创建文件夹并进入

  2. 下载libusb-1.0.21 ,并解压 tar jvxf libusb-1.0.21.tar.bz2

  3. 下载libusb-compat-0.1.5,并解压tar jvxf libusb-compat-0.1.5.tar.bz2

  4. 下载usb_modeswitch-2.5.1, 并解压tar jvxf usb-modeswitch-2.5.1.tar.bz2

libusb交叉编译

  1. 进入解压的包, cd ./libusb-1.0.21

  2. 配置Makefile文件,使用./configure工具,可以使用./configure -h 查看该工具支持的选项。--prefix选项表示安装工具的位置,将工具都安装在“/home/username/USB-4G/install”的位置。

./configure  \
--build = arm-linux \
--host = arm-linux-gnueabihf --prefix=/home/username/USB-4G/install \
--disable-shared \
--enable-static --disable-udev
  1. 编译 make

  2. 安装 make install,安装完毕后在目录/home/username/USB-4G/install中可以看到多了lib和include两个文件夹。

libusb-compat

  1. 进入解压目录, cd libusb-compat-0.1.5

  2. 配置Makefile文件,./configure工具。libusb-compat的安装依赖于libusb的库,而我们是将libusb安装在了自定义位置,因此在configure之前需要设置两个环境变量。

$ export LIBUSB_1_0_LIBS=/home/gexin/USB-4G/install/lib
$ export LIBUSB_1_0_CFLAGS = /home/gexin/USB-4G/install/ ./configure \
--build=arm-linux \
--host=arm-linux-gnueabihf \
--prefix=/home/gexin/USB-4G/install \
--disable-shared \
--enable-static --disable-udev \
  1. make

  2. make install

usb-modeswitch

  1. 进入解压目录,cd usb-modeswitch-2.5.1

  2. 该文件夹没有提供,./configure工具,因此需要我们自己手动对Makefile文件进行修改。以下几项需要修改。

CC		   = arm-linux-gnueabihf-gcc  使用交叉编译工具
INCLUDEDIR = /home/gexin/USB-4G/install/include 包含目录
LDFLAGS = /home/gexin/USB-4G/install/libc 库连接目录 下面这一行是编译命令,添加-I、-L选项
$(CC) -o $(PROG) $(OBJS) $(CFLAGS) $(LIBS) -I $(INCLUDEDIR) -L $(LDFLAGS) -static -pthread
  1. 下面可以通过make编译文件,但是在编译之前,需要修改一个环境变量。
$ export PKG_CONFIG_PATH=/home/gexin/USB-4G/install/lib/pkgconfig	//	修改环境变量

$ make	// 编译

arm-linux-gnueabihf-gcc -o usb_modeswitch usb_modeswitch.c -Wall `pkg-config --libs --cflags libusb-1.0` -I /home/gexin/USB-4G/install/include -L /home/gexin/USB-4G/install/lib  -static  -pthread
sed 's_!/usr/bin/tclsh_!'"/usr/bin/tclsh"'_' < usb_modeswitch.tcl > usb_modeswitch_dispatcher $ sudo make install // 安装

安装之后,在当前文件夹下的usb-modeswitch可执行文件可以移植到目标板上的。

usb_modeswitch移植的更多相关文章

  1. ARM+llinux系统移植3G拨号上网收发短信(一)【转】

    本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099737 一.      PPP移植 各项工作具体说明 向Linux内核添加3 ...

  2. MVVM框架从WPF移植到UWP遇到的问题和解决方法

    MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...

  3. IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)

    首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platf ...

  4. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  5. STM32F429 LCD程序移植

    STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...

  6. 将MPM雪模拟移植到Maya

    同事实现了一个迪士尼的MPM雪模拟论文,我将其移植到Maya中 论文题目是 A material point method for snow simulation 代码在这里: https://git ...

  7. ucos实时操作系统学习笔记——操作系统在STM32的移植

    使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...

  8. DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一

    关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...

  9. geotrellis使用(二十五)将Geotrellis移植到spark2.0

    目录 前言 升级spark到2.0 将geotrellis最新版部署到spark2.0(CDH) 总结 一.前言        事情总是变化这么快,前面刚写了一篇博客介绍如何将geotrellis移植 ...

随机推荐

  1. mpvue开发美团外卖点餐小程序

    mpvue-meituan mpvue-meituan 是一款使用mpvue开发的实战小程序项目,完全仿制美团官方外卖点餐小程序开发而成,项目的框架结构完全按照企业开发架构搭建而成.结合了原生小程序的 ...

  2. Oracle->oracle单实例Shell脚本[20180122]

    脚本主要用于redhat平台安装11g和12c软件     依赖包检查与安装     用户.组检查与安装     系统内核.用户限制     防火墙.selinux关闭     注意,linux组脚本 ...

  3. Python模拟校园网登录

    最近忙着实验室的项目,学习的时间相对较少.前一段时间刚开始接触python时,依葫芦画瓢照着写了一个爬虫,爬取了某个网站的图片.当看到一张张图片自动出现在电脑屏幕上时,有些小小成就感.我想大多数人开始 ...

  4. exsi6.0远程修改密码

    -------------------------------esxi远程修改root密码--------------------------- 在不接触物理机时,通过启动ssh服务,远程修改密码,具 ...

  5. Kali Basic Configuration

    1:Kali Version root@kali-node01:~# cat /etc/os-release PRETTY_NAME="Kali GNU/Linux Rolling" ...

  6. Android小例子:使用反射机制来读取图片制作一个图片浏览器

    效果图: 工程文件夹: 该例子可供于新手参考练习,如果有哪里不对的地方,望指正>-< <黑幕下的人> java代码(MainActivity.java): package co ...

  7. 【设计模式】Java之单例设计模式

    1.单例设计模式:一个类只能有一个对象 1.1 创建单例类的步骤: 1.将构造方法私有化 2.创建私有的静态成员变量 3.共有的静态成员方法,提供当前的唯一对象 1.1 创建单例的两种方式: 1.饿汉 ...

  8. TypeScript : 语法及特性

    当let声明一个变量的时候它使用的词法作用域或者是块作用域.块作用域指的就是他们包含的块以外的不能访问. const声明:是let声明有相同的作用域规则,但是它被赋值后不能再被改变.类似于java的f ...

  9. Hadoop原理之——HDFS原理

    Hadoop 3个核心组件: 分布式文件系统:Hdfs——实现将文件分布式存储在很多的服务器上(hdfs是一个基于Linux本地文件系统上的文件系统) 分布式运算编程框架:Mapreduce——实现在 ...

  10. IPV6路由技术

    OSPFV3 一.OSPFv3概述:协议号89 1.概念: OSPFv3是ospf(开放式最短路径优先)版本3的简称,主要提供对IPV6的支持,遵循的标准为RFC2740(OSPF for IPv6) ...