linux下x264库ARM交叉编译

合集下载

什么是交叉编译

什么是交叉编译

什么是交叉编译?较短回答交叉编译(cross-compilation)是指,在某个主机平台上(比如PC上)用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程。

完整回答交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。

我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如 C代码)编译(compile)成计算机可以识别和执行的二进制代码。

比如,我们在 Windows 平台上,可使用 Visual C++ 开发环境,编写程序并编译成可执行程序。

这种方式下,我们使用 PC 平台上的 Windows 工具开发针对 Windows 本身的可执行程序,这种编译过程称为 native compilation,中文可理解为本机编译。

然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是 16 到 32 MB,而 CPU 的主频大概在 100MHz 到 500MHz 之间。

这种情况下,在 ARM 平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的 CPU 运算能力。

为了解决这个问题,交叉编译工具就应运而生了。

通过交叉编译工具,我们就可以在 CPU 能力很强、存储控件足够的主机平台上(比如 PC 上)编译出针对其他平台的可执行程序。

要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。

常见的交叉编译例子如下:∙在 Windows PC 上,利用 ADS(ARM 开发环境),使用 armcc 编译器,则可编译出针对 ARM CPU 的可执行代码。

∙在 Linux PC 上,利用 arm-linux-gcc 编译器,可编译出针对 Linux ARM 平台的可执行代码。

Armlinux交叉编译

Armlinux交叉编译

Armlinux交叉编译1、编译C++程序,链接是需要添加 -lstdc++g++和gcc本质一样的,本质上还是gcc,我们实验室所有的c++程序都是用gcc编译的,一般的程序用gcc足够了。

对于C++ 程序,编译的时候用gcc 或者g++ 都可以。

但是在进行连接的时候最好用g++,因为用g++ 会自动进行C++ 标准库的连接;用gcc 连接C++ 程序也可以,但是需要人为指定连接C++ 标准库,否则就会出现 undefined reference to `__gxx_personality_v/0' 之类的错误。

可见-lstdc++ 所对应的是标准C++库。

2、linux OpenCV 静态链接错误,链接是需要添加–ldlundefined reference to `dlopen'undefined reference to `dlerror'undefined reference to `dlsym'对dlopen, dlerror, dlsym 未定义的引用,缺少链接库,链接时加上选项-ldl3、对icvPuts, icvGets, gzputs, gzgets, gzopen, gzclose 未定义的引用,编译错误如下./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvPuts(CvFileStorage*, char const*)':persistence.cpp:(.text._ZL7icvPutsP13CvFileStoragePKc+ 0x20): undefined reference to`gzputs'./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvGets(CvFileStorage*, char*, int)':persistence.cpp:(.text._ZL7icvGetsP13CvFileStoragePci+0x26 ): undefined reference to`gzgets'./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function缺少zlib库引起的,编译链接时加上-lz4、如何在configure时,将编译参数传入,改变默认的编译器gcc成arm-linux编译器按照INSTALL中的介绍,也是常用的方法,在configure的时候,加上–host=arm-linux,结果没有实现我们要的效果,没有将编译器从默认的gcc改成arm-linux-gcc,编译器还是用的默认的gcc。

ARM-Linux交叉编译步骤

ARM-Linux交叉编译步骤

samba事先安装sudo apt-get install nfs-kernel-server交叉编译步骤1、创建目录s3c2440_recover2、设置网络文件系统的根目录配置文件/etc/exports在最后一行添加s3c2440_recover的绝对路径*(rw,sync,no_root_squash)重启nfssudo /etc/init.d/nfs-kernel-server restart3、arm开发板启动Bootloader 引导加载程序Kernel uImageFilesystemBootloader -》把内核的uImge加载到内存uImage 加载filesystem =》shell 用户空间4、编译器arm-linux-gcc-4.3.2.tar.gzsudo tar zxvf xxx.tar.gz -C /编译自动会解压到/usr/local/arm设置编译器脚本(自己创建),每次打开终端,若要使用arm编译器,则先source一下arm-compile.sh ()#!/bin/bashexport PA TH=$PATH:/usr/local/arm/4.3.2/bin############### 告诉系统编译器的路径(通过在PATH环境变量中添加)修改脚本可执行权限chmod u+x arm-compile.shsource arm-compile.sh4、Uboot 编译分别解压源码uboot-1.2-utu2440.tar.bz2按照uboot编译.txt5、内核编译准备工具修改过的内核源码Linux2.6.24_utu2440.tar.gz拷贝到crosscompile目录下解压tar zxvf linux inux2.6.24_utu2440.tar.gz制作镜像文件工具mkimage拷贝到/usr/sbin 或者/usr/bin 目录下参考脚本hw-kernel编译.txt内核编译时,会根据.config 的配置文件进行文件编译(即选择哪些模块,卸载哪些模块)Make menuconfig 就是一个图形裁剪的配置工具,操作结果会自动保存到.config操作步骤参hw-kernel编译.txt6 . Busybox 创建yaffs文件系统准备工具busybox-1.19.2.tar.bz2mkyaffsimage除开uboot、kernel之外的脚本文件第一个脚本mkroot.sh是用来创建根目录下的子目录的6.1 在某个目录下执行./mkroot.sh这时,会在当前路径下生成rootfs 目录及其子目录进入rootfs/dev 下创建console null操作如下:$cd rootfs/dev/$ su口令:# mknod -m 600 console c 5 1;mknod -m 666 null c 1 3;exit退出rootfs目录cd ../../6.2 解压busybox.1.19.2.tar.bz2$ cd busybox.1.19.2修改Makefile文件Gedit Makefile在164行CROSS_COMPILE ?=改为CROSS_COMPILE ?= arm-linux-make menuconfig设置交叉编译器的路径设置编译输出路径,即make install会把编译生成的东西放到指定路径配置menuconfigBusybox Settings --->//设置静态编译方式或者动态链接Busybox Settings ---> Build Options ---> [] Build BusyBox as a static binary (no shared libs)(/usr/local/arm/4.3.2/bin) cross compiler prefix[*] Build with Large File Support (for accessing files > 2 GB)Busybox Settings ---> Install Options ---> 中输入建立根文件系统的文件所在的路径busybox install prefix即rootfs的绝对路径makemake install备注:6.3 6.4让学生做总有问题,因为这两步其实是配置etc和lib故为了方便,已经都做好了,放在build/busybox目录下,直接拷贝到rootfs下即可6.3 配置rootfs下的文件信息修改和创建必要的文件cp -a busybox.1.19.2/examples/bootfloppy/etc/* rootfs/etccd rootfs/etc增加为SHELL导入全局变量的文件/etc/profilegedit etc/profile增加初始化文件gedit etc/inittabgedit etc/fstab增加初始化脚本gedit etc/init.d/rcS在etc下创建文件mdev.conftouch medev.conf6.4 动态链接库当前路径rootfs/libcp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/* ./当前路径rootfs/usr/libcp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++* ./当前路径:rootfs的上一级目录sudo mv mkyaffsimage /usr/bin/mkyaffsimage rootfs filesystem.yaffs6.5 sudo cp filesystem.yaffs /srv/tftp在CRT中run install-filesystem注意:要用arm-linux-gcc-4.3.2 编译出来的u-boot.bin uImage filesysetm.yaffs7 在arm上执行应用程序写个简单的hello world程序arm-linux-gcc hello.c -o armhello把armhello复制到s3c2440_recover 下启动开发板登陆到shell界面后(在CRT中进行操作)将虚拟机里的目录s3c2440_recover目录,通过NFS挂载到开发板的/mnt下mount -t nfs -o nolock 192.168.1.200:/home/guoji/share/crosscompile/s3c2440_recover /mnt 此时,在开发板下的/mnte下即可看到armhello将armhello拷贝到/home目录下,并执行./armhello。

交叉编译器arm-linux-gcc

交叉编译器arm-linux-gcc

交叉编译器arm-linux-gcc(⼀)交叉编译器简介在⼀种计算机环境中运⾏的编译程序,能编译出在另外⼀种环境下运⾏的代码,这个编译过程就叫交叉编译.简单地说,就是在⼀个平台上⽣成另⼀个平台上的可执⾏代码.(⼆)体系结构与操作系统(1)常见的体系结构有ARM结构、x86结构等.(2)常见的操作系统有linux,windows等.(3)同⼀个体系结构可以运⾏不同操作系统,如x86上可以运⾏Linux、Windows等,在ARM上可以运⾏Linux、WinCE.(4)同⼀个操作系统可以在不同的体系结构上运⾏,⽐如Linux可以运⾏在x86上,也可以运⾏在ARM上.(5)同样的程序不可能运⾏在多个平台上,⽐如Windows下应⽤程序不能在Linux下运⾏.如果⼀个应⽤程序想在另⼀个平台上运⾏,必须使⽤针对该平台的编译器,来重新编译该应⽤程序的⼆进制代码.⽐如在Linux系统下运⾏Windows平台的QQ软件,必须按照以下⼏个步骤:1.QQ程序源代码2.使⽤Linux下的编译器来编译QQ软件的源代码这样编译出来的可执⾏程序就可以在Linux下运⾏了.所以,如何使ARM来运⾏⽤户的应⽤程序呢,就需要⽤到针对ARM的编译器来编译程序.(三)使⽤交叉编译器的原因ARM上可以运⾏操作系统,所以⽤户完全可以将ARM当做计算机来使⽤,理论上也可以在ARM上使⽤本地的编译器来编译程序.但是,编译器在编译程序时,会产⽣⼤量的中间⽂件,这会占⽤很⼤的内存和磁盘空间,且对CPU处理速度要求较⾼,⽐如S3C2440A内存、磁盘空间只有⼏⼗到100多兆,CPU只有400-500MHz,完全达不到编译程序的要求.所以,在进⾏ARM-linux嵌⼊式开发时必须在PC机(x86结构)上编译出能够运⾏在ARM上的程序,然后再将程序下载到ARM中来运⾏.这就⽤到了交叉编译器.要进⾏交叉编译,⽤户需要在主机平台上安装对应的交叉编译⼯具链(cross compilation tool chain),然后⽤这个交叉编译⼯具链编译⽤户的源代码,最终⽣成可在⽬标平台上运⾏的代码.交叉编译⼯具链可以从⽹上下载,也可以⾃⼰制作.但编译器不是万能的,受版本限制,编译某些程序时会报错.常见的交叉编译⼯具链有:(1)Cross -2.95.3 tar: 该版本较早,除了编译vivi外⼀般不使⽤.(2)arm920t-eabi.tgz: 4.1.2版本的编译器,⽀持eabi,可以编译TX2440A开发板上的所有程序.(3)arm-linux-gcc: 4.3.2版本的编译器,⽀持eabi,是最常见的交叉⼯具链.Attention什么是EABIEABI,Embeded application binary interface,即嵌⼊式应⽤⼆进制接⼝,是描述可连接⽬标代码、库⽬标代码、可执⾏⽂件影像、如何连接、执⾏和调试以及⽬标代码⽣成过程,和c, c++语⾔接⼝的规范,是编译连接⼯具的基础规范,也是研究它们⼯作原理的基础.简⽽⾔之,EABI就是⼀种编译规范,交叉编译器在编译时,对于浮点运算会使⽤硬浮点运算,⽽对于没有硬浮点运算的处理器,⽐如S3C2440,会使⽤软浮点,但这样会在速度上受到很⼤的限制,⽽EABI则对浮点运算进⾏了优化,提⾼了浮点运算的性能,节省了编译时间.(四)安装交叉⼯具链arm-linux-gcc 4.3.2安装交叉编译器arm-linux-gcc就是在主机平台(pc机的Linux操作系统)上安装对应的交叉编译⼯具链,换句话说,是将交叉编译器arm-linux-gcc 4.3.2在Linux操作系统下安装.安装步骤:(1)启动Samba服务器,打开共享⽬录/home/lishuai,将压缩⽂件arm-linux-gcc-4.3.2.tgz复制到/home/lishuai下.(2)解压软件包arm-linux-gcc-4.3.2.tgz.[root@localhost lishuai]#tar xzvf arm-linux-gcc4.3.2.tgz1.⽬录4.3.2就是该交叉编译器的⽬录.从arm-linux-gcc-4.3.2.tgz解压信息来看,该软件包需要解压在usr/local/arm下,⽽实际却解压到了共享⽬录/home/lishuai下2.进⼊⽬录usr/local/内,并没有找到arm⽂件夹,所以需要新建⼀arm⽂件夹,再将⽬录4.3.2移动到新建⽬录usr/local/arm下.其中,4.3.2/bin就是arm-linux-gcc的可执⾏⽂件.[root@localhost local]#mv /home/lishuai/usr/local/arm/4.3.2 ./3.进⼊⽬录/usr/local/arm/4.3.2/bin,可以看到不同类型的编译器.但在ARM下经常⽤到是arm-linux-gcc.其实它也是⼀个gcc编译器,与gcc 使⽤⽅法⼀致,不过该编译器是针对arm体系结构、Linux操作系统的编译器.利⽤该编译器就可以编译出运⾏在ARM上的Linux操作系统下的应⽤程序.4.进⼊⽬录/usr/local/arm/4.3.2/arm-none-linux-gnueabi.其中,lib⽬录下存放的是库⽂件,⽤户编写的应⽤程序在运⾏时就依赖于这些库⽂件.5.此时还不能编译源码,系统⼀般会提⽰找不到命令arm-linux-gcc.这是环境变量在作祟.所以必须修改环境变量PATH.[root@localhost lishuai]#vi /etc/profile在"export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC"这⼀⾏的下⾯添加环境变量,输⼊:export PATH=/usr/local/arm/4.3.2/bin:$PATH指定变量PATH为交叉编译器的路径,⽬的是告诉操作系统可以到⽬录/usr/local/arm/4.3.2/bin下查找可执⾏⽂件6.[root@localhost lishuai#:source /etc/profile//使已修改的配置⽂件/etc/profile⽣效7.查看arm-linux-gcc编译器的版本[root@localhost lishuai]#arm-linux-gcc -v(五)arm-linu-gcc应⽤实例实例:如何使⽤交叉编译器编译源码包boa-0.94.13.tar.tar1. 启动SMB服务器,将源码包放在共享⽂件夹/home/lishuai下2. 输⼊命令: tar xzvf boa-0.94.13.tar.tar//解压该源码包//⼀般的源码包内有Makefile⽂件,执⾏make就可以编译,但该源码包内没有,此时执⾏make是⽆效的//仍然没有Makefile,但找到了configure⽂件,通过执⾏configure⽂件可以⽣成Makefile[root@localhost lishuai]# ./configure//运⾏configure⽂件,⽣成了Makefile⽂件//由于要编译出在ARM平台上的程序,就需要使⽤交叉编译器.在Makefile⽂件内的绿⾊⼤写字母都是Makefile变量,可以看到变量CFLAGS = -g -o2 -pipe -Wall -l,该变量是设置编译选项;变量CC = gcc,该变量是设置需要使⽤的编译器.由于要使⽤交叉编译器arm-linux-gcc,所以该变量应设置为CC = arm-linux-gcc,CPP = arm-linux-gcc -E,保存并退出.[root@localhost lishuai]#make//执⾏make进⾏编译//⽣成名为boa的可执⾏程序,该程序可下载到ARM内来执⾏其实,这个过程也叫做移植.移植就是将⼀个源码包经过修改、配置、交叉编译,然后下载到⼀个平台上运⾏.⽐如经常移植的有Bootloader、内核、QT等.。

Linux交叉编译简介

Linux交叉编译简介

Linux交叉编译简介Linux 交叉编译简介主机,⽬标,交叉编译器主机与⽬标编译器是将源代码转换为可执⾏代码的程序。

像所有程序⼀样,编译器运⾏在特定类型的计算机上,输出的新程序也运⾏在特定类型的计算机上。

运⾏编译器的计算机称为主机,运⾏新程序的计算机称为⽬标。

当主机和⽬标是同⼀类型的机器时,编译器是本机编译器。

当宿主和⽬标不同时,编译器是交叉编译器。

为什么要交叉编译?某些设备构建程序的PC,⽤户可以获得适当的⽬标硬件(或模拟器),启动 Linux Release版,在该环境中进⾏本地编译。

这是⼀种有效的⽅法(在处理 Mac Mini时甚⾄可能是⼀个好主意),但对于 linksys 路由器,或 iPod,有⼀些突出的缺点:速度- ⽬标平台通常⽐主机慢⼀个数量级或更多。

⼤多数专⽤嵌⼊式硬件是为低成本和低功耗⽽设计的,⽽不是⾼性能。

由于在⾼性能桌⾯硬件上运⾏,现代模拟器(如 qemu)实际上⽐模拟的许多现实世界的硬件要快。

性能- 编译⾮常耗费资源。

⽬标平台通常没有台式机GB 内存和数百 GB 磁盘空间;甚⾄可能没有资源来构建“hello world”,更不⽤说⼤⽽复杂的包了。

可⽤性-未运⾏过的硬件平台上运⾏ Linux,需要交叉编译器。

即使在 Arm 或 Mips 等历史悠久的平台上,给定⽬标找到最新的全功能预构建本机环境很困难。

如果平台通常不⽤作开发⼯作站,可能没有现成的最新预构建Release版,如果有,则可能已经过时。

如果必须先为⽬标构建Release版,才能在⽬标上进⾏构建,⽆论如何都将返回交叉编译。

灵活性- 功能齐全的 Linux Release版,由数百个软件包组成,但交叉编译环境可以从⼤多数⽅⾯依赖于主机的现有Release版。

交叉编译的重点是构建要部署的⽬标包,不是花时间获取在⽬标系统上运⾏的仅构建先决条件。

⽅便-⽤户界⾯不友好,debug构建中断不⽅便。

从 CD 安装到没有 CD-ROM 驱动器的机器上,在测试环境和开发环境之间来回重新启动。

linux arm交叉编译程序步骤

linux arm交叉编译程序步骤

linux arm交叉编译程序步骤下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!在嵌入式系统开发中,使用ARM架构是非常常见的选择。

嵌入式linux交叉编译工具链

嵌入式linux交叉编译工具链

一、交叉工编译工具链的简介 ——为什么要使用交叉编译
在裁减和定制Linux内核用于嵌入式系统之前,由于一般嵌
入式开发系统存储大小有限,通常都要在性能优越的PC上 建立一个用于目标机的交叉编译工具链,用该交叉编译工具 链在PC上编译目标机上要运行的程序。交叉编译工具链是 一个由编译器、连接器和解释器组成的综合开发环境,交叉 编译工具链主要由binutils、gcc和glibc 3个部分组成。有时 出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。建立交叉编译工具 链是一个相当复杂的过程,如果不想自己经历复杂繁琐的编 译过程,网上有一些编译好的可用的交叉编译工具链可以下 载,但就以学习为目的来说读者有必要学习自己制作一个交 叉编译工具链。
二、交叉编译工具链的制作方法 Leabharlann 步构建交叉编译工具链 3、建立环境变量
该步骤的目的是为了方便重复输入路径,因为重复操作每件相同 的事情总会让人觉得很麻烦。声明以下环境变量的目的是在之后 编译工具库的时候会用到,很方便输入,尤其是可以降低输错路 径的风险。 # export PRJROOT=/home/jiabing/armlinux # export TARGET=arm-linux # export PREFIX=$PRJROOT/tools # export TARGET_PREFIX=$PREFIX/$TARGET # export PATH=$PREFIX/bin:$PATH 注意,用export声明的变量是临时的变量,也就是当注销或更换 了控制台,这些环境变量就消失了,如果还需要使用这些环境变 量就必须重复export操作,所以有时会很麻烦。值得庆幸的是, 环境变量也可以定义在bashrc文件中,这样当注销或更换控制台 时,这些变量就一直有效,就不用老是export这些变量了。

linux学习之交叉编译环境

linux学习之交叉编译环境

linux学习之交叉编译环境⼀在Linux上配置交叉编译环境:1. 根据芯⽚型号确定芯⽚指令集架构,并根据该架构选择合适的交叉编译⼯具2. 将交叉编译⼯具解压,添加到环境变量。

3. 编译⽬标⽂件,并想法设法将⽬标⽂件整到开发板上,有以下⽅法:将⽬标⽂件先整到windows PC下,拷贝到U盘/SD卡然后再插⼊开发板;⽤⽀持SSH的⼯具如putty登陆板⼦linux服务器;⽤NFS实现。

⼆ Uboot:⽤来启动内核(CPU不能直接从块设备中执⾏代码): 执⾏uboot代码,在uboot中把块设备中的内核代码复制到某内存地址处,然后再执⾏这个地址,即可启动内核。

uboot代码(uboot 根⽬录的spl⽂件夹u-boot-spl.bin和uboot根⽬录下u-boot.bin)需要⽤make(makefile配置+“.config”(make menuconfig图形化配置⼯具的输出⽂件))出来。

然后分别烧录进板⼦。

三编译kernel,并将其烧写进板⼦,启动板⼦后linux的shell环境应该跑起来了。

注意烧录内核的位置和内核运⾏环境: ramdisk根⽂件系统,这个⽂件系统是存在RAM⾥的,所以你在⾥⾯写⼊东西,⼀断电就没有了。

NAND Yaffs2⽂件系统:断电后还是存在的,使⽤busybox⽤来⽣成linux⽂件系统的⼏个基本⽂件夹,然后通过打包⼯具mkyaffs2,它⽤来⽣成能直接烧录到板⼦⾥的镜像⽂件,以下都是要烧写的⽂件。

Image Name Image Type Image start offsetu-boot-spl.bin uboot0x200u-boot.bin data 0x100000env.txt env0x80000970uImage data0x200000rootfs_yaffs2.img data 0x2000000四:将⾃⼰编写的程序的可执⾏⽂件拷贝到/opt⽬录下,并拷贝所需的库⽂件到/lib下,即可通过命令⾏来运⾏⽂件了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux下x264库ARM交叉编译
一、准备工作
1、x264库源码下载地址:http://videolan/developers/x264l
作者目前的版本是x264-snapshot-20160511-2245
2、编译器arm-none-Linux-gnueabi-gcc
二、编译步骤
1、解压安装包
tar -xzvf last_x264.tar.bz2
cd x264-snapshot-20160511-2245
2、修改配置文件
./configure --disbale-asm 注意:这里加了--disable-asm选项是因为arm-none-linux-gnuabi工具链是没有汇编器,所以禁止此选项
由于未指定--prefix,所以程序会默认安装/usr/local/bin目录下
3、修改config.mak
主要是将相关选项修改为arm-none-linux-gnuabi相关的配置,修改内容如下:
SYS_ARCH=ARM
CC=arm-none-linux-gnueabi-gcc
CFLAGS=-Wno-maybe-uninitialized -Wshadow -O3 -ffast-math -Wall -I. -I$(SRCPATH) -std=gnu99 -D_GNU_SOURCE -fomit-frame-pointer -fno-tree-vectorize
LD=arm-none-linux-gnueabi-gcc -o
4、make
5、make install
我的本意是想生成lib264.a静态库的,很奇怪,在x264-snapshot-20160511-2245目录下可以找到lib264.a和lib264.so及相关的头文件,但是没有在/usr/lib/local目录下找到libx264.a,但是有x264。

有点不太理解,而且很多过程基本上按照的网上提供的方式参考操作的,很纳闷哪里出。

相关文档
最新文档