ubuntu服务器如何交叉编译
❶ 怎么在ubuntu系统下安详交叉编译器
1.主机:ubuntu 10.10 gcc-4.4.5, kernel-2.6.35
sudo apt-get install bison flex build-essential patch libncurses5-dev
更新系统基本的编译工具集
(用UBUNTU最大的好处就是可以 在线更新一些需要的系统包,APT-GET)
2 使用的是CROSSTOOL做的,需要的软件包
第一个是工具链编译脚本
第二个是2进制工具集
第三个是GCC-3.4.5的源代码
第四个是依赖的linux标准函数库
第五个是依赖的thread库
第六个是LINUX代码
(1).linux 源代码其实是用了 在编译的时候需要调用一些了linux库文件和数据结构或者是头文件,类似驱动开发依赖源代码
(2).这个是可以指定的找到合适的就可以,不一定就是这个版本的
第七个是标准库的头文件了
3 UBUNTU10自带的GCC版本是4.4.5 太高编译会出现语法错误,所以安装4.1的就好
sudo apt-get install gcc-4.1
sudo rm /usr/bin/gcc (删除GCC,它只是个到gcc-4.3.2的软链接文件)
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的软链接)
(重新做个软件连接指向4.1就好,这个可以在/usr/bin 下会出现:gcc-4.1 gcc-4.4)
4 修改 dash (ubuntu 默认的是 dash ,编译指向的是bash)
ls -la /bin/sh
看到链接的是 dash ,则请运行以下命令
sudo dpkg-reconfigure dash
选择 no 以删除 dash
此处如果不改好的话,编译时会出现错
5 以上系统配置完成,下面开始修改脚本编译(一下就是网上参考的了,很多的都是这么做的,谢谢那些真正看懂脚本的大牛们)
$tar –zxvf crosstool-0.43.tar.gz
$cd crosstool-0.43
在此目录下可以看到有很多.sh脚本和.dat配置文件,每一个支持的处理器都有它所相应的脚本。http://www.linuxidc.com/假如选用demo- arm- softfloat.sh 就是建立目标为支持软浮点的arm交叉编译工具链。
3.修改demo-arm-softfloat.sh
$vim demo-arm-softfloat.sh
修改下面两句
TARBALLS_DIR=$HOME/downloads //表示下载的源码的存放目录
RESULT_TOP=/opt/crosstools //表示生成的工具链的存放目录
为:
TARBALLS_DIR=/home/linux/downloads(源码存放目录)
RESULT_TOP=/home/linux/crosstools(生成工具链目录)
4.修改 gcc-3.4.5-glibc-2.3.6.dat
$ vim gcc-3.4.5-glibc-2.3.6.dat
修改内容为:
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.26.5(内核版本)
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
5.修改glibc-2.3.6.tar.bz2包内的configure文件
将
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
2.1[3-9]*) 《--------------------------------------------3920行
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
修改为
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
2.[1-2][0-9]*) 《--------------------------------------------3920行
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
还有3981行也有这样的代码 一个是ld,一个是ar
6.$ ./ demo-arm-softfloat.sh
注意啊UBUNTU权限管理很严格,在执行脚本前,最好的就是把crosstool脚本所在的目录和几个源文件的目录设置成 777
脚本运行的第一个是创建build的目录,在脚本所在的目录下,然后是解压所有的源文件,检查所有的依赖关系,进行编译
大概需要很长时间吧,我是睡觉醒来看看 好了,,,,,,呵呵
即使如此的工作,干了2个通宵搞定,当然边干我还在三国杀,,,,,,,
当然成功后,有点小激动,熬了一宿,失眠了,,,,亢奋中
❷ Ubuntu14.04 用arm-linux-gcc 4.4.3 配置交叉编译环境问题
安装步骤
1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了
❸ 如何在ubuntu中进行交叉编译
第一步,你需要下载QT源代码(4.8的编译比较容易),然后通过 ./configure (参数自己定,不懂看readme)接下来就是在QT CREATE里面配置了,如下: 工具-->选项--->构建和运行 1. 编译器: 点击添加:
❹ ubuntu下怎么安装交叉编译
1. 下载软件包
从linaro的网站下载预编译二进制包,
注意选择的版本哦,我们要使用linux下的哦。选择这个:
gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.bz2
2. 解压
解压gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz 到 ~/arm-cross-toolchain/目录下
3. 设置环境变量
~$ vi .bashrc
在最后添加如下 2 行:
PATH=$PATH:/home/lxl/arm-cross-toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin
export PATH
请注意,第一行的$PATH后面是英文冒号,而冒号后面是你的cross-toolchain的可执行文件目录(bin目录)的绝对路径。 这两句的意思就是将cross-toolchain的可执行文件路径加入系统环境变量PATH中。
4. 使环境变量 生效
~$ source .bashrc
5. 测试
~$ arm-linux-gnueabihf-gcc -v
报错:arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
原因:64位的系统,缺少 lib32stdc++6这个包
解决:~$ sudo apt-get install lib32stdc++6
❺ ubuntu怎么安装arm交叉编译器
1、下载文件:
安装包:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
2、开始安装(建议大家新建一个文件夹),然后将文件复制到新建的文件夹中
输入命令: sudo tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
安装完成后,输入ls命令,可以看到一个opt文件夹,
3.修改环境变量,把交叉编译器的路径加入到PATH:
利用tab键的补齐功能进入该路径
输入pwd命令,查看当前路径的绝对路径
/home/cf/ARM/opt/FriendlyARM/toolschain/4.5.1/bin
❻ 小白求助,如何在ubuntu的QT creator下完成交叉编译
你需要先安装嵌入式版本的Qt
以下是我编译Qt时的命令:楼主看着自行改
./configure -prefix /opt/QtEmbedded-4.7.3 -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -confirm-license -qt-mouse-tslib
然后把生成的Qt的qmake所在的目录加入的Qt creater中,工具链就选你上面的那个arm-linux-g++
然后新建项目的时候就可以选择 Embedded什么来着
这样就搞定了!
❼ Ubuntu下使用mingw-w64交叉编译ffmpeg
网上大部分编译windows版ffmpeg的教程都是基于msys+mingw的,完全运行在windows上。由于msys2的性能实在是太糟糕了,编译速度太感人,因此决定研究Linux下使用mingw-w64交叉编译
先是安装ubuntu版的mingw-w64
sudo apt install mingw-w64
然后在configure ffmpeg的时候,在正常的配置项之后加上。
--arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-
上面是32位库编译的配置,64位的如下
--arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32-
而且最好使用动态库,静态库还需要链接一大堆mingw的库实现,而且还可能链接失败。但这样编译出来的动态库,还需要依赖 libgcc_s_sjlj-1.dll。如果要移除这个依赖,configure的时候还要加上 --extra-ldflags='-static-libgcc'