linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法
2017-08-24 13:50
603 查看
转自:http://blog.csdn.net/xfc_1939/article/details/53422071
linux交叉编译libusb的方法
#### 下载libusb 下载网址:http://sourceforge.net/projects/libusb/files/#### 交叉编译libusb #### 将下载好的libusb压缩包解压后进入该文件执行下列指令 (指令在一行)./configure --build=i686-linux --host=arm-linux CC=/kit/arm/gcc/3.3.6/bin/arm-linux-gcc CXX=/kit/arm/gcc/3.3.6/bin/arm-linux-g++执行上述指令后报如下错误configure:error:“udev support requested but libudev not installed” 解决方法:在上述编译命令后面添加 --disable-udev然后执行make&&make install执行完make install后我们可以在prefix指定的目录中看到编译好的库及相应的头文件。在arm平台下使用的库文件名称是:libusb-1.0.so.0.1.0。–build=i686-linux表示该软件在x86平台被编译–host=arm-linux表示该软件编译完成后在arm平台上运行–prefix后面为软件安装目录。CC=,CXX等于指定了交叉编译使用的C,C++交叉编译器#### 交叉编译测试程序 #### 交叉编译命令
LIBUSB=/home/xfc/usb/install arm-xilinx-linux-gnueabi-gcc -o test -I${LIBUSB}/include/libusb-1.0 -L${LIBUSB}/lib/ -lusb-1.0 test.c#### 在ZYNQ端执行交叉编译好的程序 #### 需要将之前交叉编译好的动态库拷贝到ZYNQ端linux下的/lib文件夹。注意拷贝的库文件名为:libusb-1.0.so.0.1.0。拷贝到/lib下之后需要重命名为libusb-1.0.so.0。 user@ubuntu:/kit/arm/gcc/4.7.3/bin$ /kit/mips/gcc/3.4.6l/bin/mipsel-linux-gcc -v // 查看交叉编译目标平台Reading specs from /kit/mips/gcc/3.4.6l/lib/gcc/mipsel-linux/3.4.6/specsConfigured with: shij configure --target=mipsel-linux --enable-shared --enable-threads=posix --with-gnu-as --with-gnu-ld --disable-multilib --enable-languages=c,c++--prefix=/kit/mips/gcc/3.4.6l --libexecdir=/kit/mips/gcc/3.4.6l/lib --with-sysroot=/kit/mips/gcc/3.4.6l/mipsel-linux/osThread model: posixgcc version 3.4.6 - 11 mipsl 【--target=mipsel-linux 表示目标平台(mipsel-linux的交叉编译工具)--host=mipsel-linux 】6. user@ubuntu:/mnt/hgfs/share_PC/ly/projectFolder/weishitong/HTCLib-pcsc-ccid$gcc-v // 查看当前编译平台使用内建 specs。COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6/lto-wrapper目标:i686-linux-gnu配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id--with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes--enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release--build=i686-linux-gnu--host=i686-linux-gnu --target=i686-linux-gnu线程模型:posixgcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 【./configure --build=i686-linux 软件或库编译平台】http://www.lai18.com/content/9413461.html http://blog.csdn.net/wujiangguizhen/article/details/23128489后续: 在编x86-64位的静态库成功后,用这个静态库编动态库时遇到【relocation r_x86_64_32 against '.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 】错误。尝试解决方法一:在configure自动生成的Makefile里加-fPIC,发现没有起作用,也有可能没有加全;最后验证了一下,没有加全尝试解决方法二:如果你的makefile很大,CFLAGS也不明确,那就在配置时手动加上,即:$CFLAGS="-fPIC" ./configure ........尝试方法二完美解决\(^o^)/~注: 可以在Makefile里找到CFLAGS的定义在原来定义的基础上加上-fPIC ,例如: 原定义 CFLAGS=-g -O2 ,$CFLAGS="-g -O2 -fPIC" ./configure注:加粗部分为主要参考部分,顺利!
相关文章推荐
- linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法
- GDB arm-linux交叉编译移植和使用方法(特别是对于正在运行的程序或者段错误的程序进行分析)
- GDB arm-linux交叉编译移植和使用方法(特别是对于正在运行的程序或者段错误的程序进行分析)
- Linux下查看某一个程序所使用的内存方法
- linux下用gcc编译使用了math库函数的程序出错的解决方法
- 1.2.在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。并熟悉相关指令。
- Linux 下查看某一个程序所使用的内存方法
- arm-linux-gcc-4.4.3交叉编译google的protobuf。以及使用方法
- Linux下使用gcc编译程序找不到库的分析和解决方法
- Linux下使用gcc编译程序找不到库的分析和解决方法
- linux下查看某一个程序所使用的内存方法总结
- Linux操作系统的简单指令及如何使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。
- Linux下查看某一个程序所使用的内存方法
- Linux 下查看某一个程序所使用的内存方法介绍
- Android 运行 C/C++程序 (使用 arm-linux-gcc 交叉编译环境)
- Android 运行 C/C++程序 (使用 arm-linux-gcc 交叉编译环境)
- linux下用gcc编译使用了math库函数的程序出错的解决方法
- 在linux环境下尝试使用gcc编译一个程序,并验证-E\-S\-c选项
- linux使用一个刚编译驱动方法
- 在linux中使用mingw为64位windows交叉编译程序