‘壹’ 请问各位linux 系统高手,cross-3.3.2.tar.bz2交叉编译工具在哪里可以下载啊,帮帮忙,谢谢!
你要的是crosstool吧?这是GCC交叉编译工具集的自动安装脚本,可以到http://www.kegel.com/crosstool/#download下载,最新版本为0.43。
不知道这是不是你在找的。
‘贰’ 如何在windows上用ndk交叉编译其他平台程序
目标 :编译arm64的.so库
编译方法:理论上应该有两种交叉编译方法,法一,在Linux服务器上安装交叉工具链,直接用交叉工具链进行编译链接;法二,使用ndk完成交叉编译,因为
ndk已经安装好交叉编译工具链,以及相关的系统库和系统头文件了。这两种方法的区别在于,linux服务器上的编译使用的makefile和ndk使用的.mk
文件显然不同。原因是ndk作为一个集成编译环境,制定了一套特定的规则用于生成最终的编译脚本。
这里简单总结下,如何在windows用ndk进行交叉编译arm64目标平台的.so库:
step1:找到ndk开发工具包,官网之类的都可以下载,android-ndk64-r10-windows-x86_64.rar文件
step2:解压上述ndk工具包,将包含程序源文件和头文件的文件夹testProject都放入android-ndk-r10下的samples目录下。
放在其他地方当然也可以,但是后续相对路径之类的不太好加,既然其他例子都放这,把代码放这编译是最保险的了。
step3:在testProject中增加一个jni的文件夹,必须要添加!!!!!!
step4:在jni文件夹中,添加一个Android.mk的文件,必须要添加!!!!!
step5:在jni文件夹中,添加一个Application.mk的文件与Android.mk并列,必须要添加!!!!!
step6:Android.mk和Application.mk合起来就类似于linux环境下的makefile编译文件。
如何写Android.mk,可以参考例子helllo-jni中jni文件夹下的Android.mk。
LOCAL_PATH:=$(call my-dir) #必须要写的
include $(CLEAR_VARS) #必须要写的
LOCAL_MODULE:=hello-jni #编译出来的模块名称
LOCAL_SRC_FILES:=hello-jni.c #制定编译的源文件名称
include $(BUILD_SHARED_LIBRARY)#放在最后
除了上述变量之外,还有其他的指定的变量,
LOCAL_CFLAGS,用于指定编译选项,这个和makefile中是完全一样的,可以指定编译选项-g,也可以指定编译宏及宏值
LOCAL_LDLIBS,用于指定链接的依赖库,这个可以makefile也是完全一样的,可以指定链接库用-l库名,以及指定库搜索路径用_L路径名
LOCAL_STATIC_LIBRARIES,指定链接的静态库名,makefile中没有
LOCAL_C_INCLUDES,用于指定编译头文件的路径,和makefile中不同,路径前不需要加-I,直接写路径即可,可以是相对路径或绝对路径,
多个路径之间用空格隔开。
编写上述Android.mk碰到的问题有,
(1)使用默认的系统自动加载stl库头文件总是出错,只好手动在LOCAL_STATIC_LIBRARIES指定sources/cxx-stl/stlport/stlport来完成对#include<string>这种c++形式的头文件加载
(2)使用$(SYSROOT)/usr/include来完成对系统库头文件的加载,结果找不到sem_t符号,只好指定platforms/android-L/arch-arm64/usr/include
step7:Application.mk编写
APP_STL指定使用的stl移植库,动态或者静态都行
APP_CPPFLAGS,指定app编译的编译选项
APP_ABI指定abi规范类型,例如arm64-v8a,也可以写成ALL就是把所有的类型全部编一编
APP_PLATFORM指定编译的platform名称,这里可以写成android-L或者不指定全编。
step8:编译完成后,运行。
启动cmd,使用cd /D进行到testProject的jni目录下
step9:将android-ndk-r10下的ndk-build.cmd直接拖拽到cmd中,此时直接敲回车,就可以编译了。当然也可以加一个 clean,清除编译中间文件。
step10:检查下编译结果,编译成功后在testProject中多了两个文件夹与jni并列的,libs和obj。
编译链接后的结果就在libs中!
‘叁’ Ubuntu14.04 用arm-linux-gcc 4.4.3 配置交叉编译环境问题
安装步骤
1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了
‘肆’ 如何交叉编译sqlite
一、首先到http://www.sqlite.org/download.html下载Linux版本的源码:sqlite-autoconf-3130000.tar.gz。
二、解压:tar xvzf sqlite-autoconf-3130000.tar.gz
三、进入解压后的目录:$ cd sqlite-autoconf-3130000
四、执行:./configure CC=/opt/poky/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc --host=arm-linux --prefix= /usr/tmp/
说明:CC赋值为嵌入式开发环境所使用的交叉编译工具,--host指定软件运行环境为arm-linux, --prefix指定源码交叉编译后生成文件的路径。
五、执行 sudo make && make install
六、将在 /usr/tmp/lib 目录下生成的 libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6三个so文件拷贝的,嵌入式开发环境的/lib/目录 或者程序运行依赖的lib目录下即可。
将/usr/tmp/bin 目录下的 sqlite3 应用程序拷贝到嵌入式开发环境下就可以运行并创建数据库了。
七、编译程序 需要加上 -l sqlite3 这个链接选项。
‘伍’ yocto交叉编译工具在哪个目录
概述YoctoProject是一个开源协作项目,它提供了一些模板、工具和方法来支持面向嵌入式产品的自定义Linux系统,不管硬件架构是什么。我想要告诉那些对yocto这个名称不甚理解的用户的是,术语yocto是最小的SI单元。最为一个前缀,yocto表示10^-24。本文将提供一个分步指导,向您介绍如何使用YoctoProject的行业标准开源工具为嵌入式设备创建自定义的Linux操作系统,并使用QEMU在一台虚拟机中启动操作系统。YoctoProject是由大型硬件公司和操作系统供应商资助的、由Linux基金会赞助的开源项目,提供了一些行业领先的工具、方法和元数据来构建Linux系统。YoctoProject的两大主要组件由YoctoProject和OpenEmbedded项目一起维护,这两个组件是BitBake和OpenEmbedded-Core,前者是构建引擎,后者是运行构建过程所使用的一套核心配方(recipe)。下一节会介绍所有项目组件。YoctoProject简介作为一个协作项目,YoctoProject有时也称为“umbrella”项目,它吸纳了许多不同的开发流程部分。在整个YoctoProject中,这些部分被称为项目,包括构建工具、称为核心配方的构建指令元数据、库、实用程序和图形用户界面(GUI)。PokyPoky是YoctoProject的一个参考构建系统。它包含BitBake、OpenEmbedded-Core、一个板卡支持包(BSP)以及整合到构建过程中的其他任何程序包或层。Poky这一名称也指使用参考构建系统得到的默认Linux发行版,它可能极其小(core-image-minimal),也可能是带有GUI的整个Linux系统(core-image-sato)。您可以将Poky构建系统看作是整个项目的一个参考系统,即运行中进程的一个工作示例。在下载YoctoProject时,实际上也下载了可用于构建默认系统的这些工具、实用程序、库、工具链和元数据的实例。这一参考系统以及它创建的参考发行版都被命名为Poky。您还可以将此作为一个起点来创建您自己的发行版,当然,您可以对此发行版随意命名。所有构建系统都需要的一个项目是工具链:一个编译器、汇编程序、链接器以及为给定架构创建二进制可执行文件所需的其他二进制实用程序。Poky使用了GNUCompilerCollection(GCC),不过您也可以指定其他工具链。Poky使用了一种名为交叉编译的技术:在一个架构上使用工具链为另一个架构构建二进制可执行文件(例如,在基于x86的系统上构建ARM发行版)。开发人员常常在嵌入式系统开发中使用交叉编译来利用主机系统的高性能。元数据集元数据集按层进行排列,这样一来每一层都可以为下面的层提供单独的功能。基层是OpenEmbedded-Core或oe-core,提供了所有构建项目所必需的常见配方、类和相关功能。然后您可以通过在oe-core之上添加新层来定制构建。OpenEmbedded-Core由YoctoProject和OpenEmbedded项目共同维护。将YoctoProject与OpenEmbedded分开的层是meta-yocto层,该层提供了Poky发行版配置和一组核心的参考BSP。
‘陆’ 如何安装arm-linux-gcc
对于嵌入式linux的来说,建立开发环境是开发的第一步,arm-linux-gcc是基于arm架构的linux平台交叉编译工具。
工具原料:linux+下载arm-linux-gcc-4.4.3.tar.gz安装包。
安装arm-linux-gcc方法如下:
一、下载arm-linux-gcc-4.4.3.tar.gz安装包。
二、打开终端,输入
sudo
tar
xvzf
arm-linux-gcc-4.4.3.tar.gz
-C
/
安装arm-linux-gcc-4.4.3如下图所示:
三、在终端输入
sudo
vim
/root/.bashrc,在最后一行输入:
export
PATH=$PATH:/opt/toolschain/4.4.3/bin加入arm-linux-gcc的开发环境
四、安装兼容库,在终端输入:sudo
apt-get
install
g++-multilib如下图所示
五、测试成功没有,登录root后输入:
arm-linux-gcc
-v,出现如下图所示,则安装成功:
这样就ok了
‘柒’ ubuntu怎么安装交叉编译工具链
. 解压 arm-linux-gcc-3.4.1.tar.bz2
#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下
# cd usr/local/
#cp -rv arm /usr/local/
现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了
3. 修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用方法一)
方法一:修改/etc/bash.bashrc文件
#vim /etc/bash.bashrc
在最后加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
export PATH
‘捌’ 虚拟机linux怎么查看交叉编译环境
1.安装源码编译环境(配置gcc),在ubuntu安装完成已经有gcc(gcc是由GNU之父Stallman所开发的linux下的编译器,全称为GNU Compiler Collection, 目前可以编译的语言包括:C, C++, Objective-C, Fortran, Java, and Ada.),但是gcc还不能编译文件,因为缺少一些头文件.那么我们就要来配置这些头文件。在这里我们需要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。安装build-essential,你可以在新立得搜索然后安装或者在终端里输入:
sudo apt-get install build-essential
2.除了编辑器之外,我们还需要文本编辑器来编写程序源码,Ubuntu中其实已自带编辑器,但是目前较为着名而且流行的vi / vim 编辑器可以通过在Ubuntu的软件中心下载,或是在终端输入指令下载,指令如下:
sudo apt-get install vim-full
3.解压包:arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2,(注:不同文件包类型,指令有区别,如bz2 -xf)如下指令:
sudo tar -xf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 OR sudo tar -xf arm-linux-gcc-3.4.6-glibc-2.3.6.tgz -C /work/
我的Ubuntu使用第二个指令解压后解压包放在了work目录下。
4.修改环境变量,把交叉编译器的路径加入到PATH:方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用),指令如下:
sudo gedit /etc/bash.bashrc
然后在文件的末尾空白处加入一下代码:
if [ -d /work/gcc-3.4.6-glibc-2.3.6 ] ; then
PATH=/work/gcc-3.4.6-glibc-2.3.6/arm-linux/bin:"${PATH}"
fi
即完成路径的添加。
5.使新的环境变量生效,不用重启电脑。输入下面指令:
source /etc/bash.bashrc
6.检查是否将路径加入到PATH。输入下面指令:
echo $PATH
若显示的内容中含有:/usr/local/arm/4.3.2/bin 说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
7. 测试是否安装成功,下面的命令会显示arm-linux-gcc信息和版本。