ARM DS-5简直强大,可以像开发Android一样方便的开发arm-Linux的程序,再也不用劳神的找各种编辑器,或者裸编程序了。
真搞不懂为啥这个东西我现在才知道先见恨晚,所以写了这篇文章给大家一起分享下,其中的奥秘花费了我两天的时间来探索。
要建立标题中的工程步骤如下。
1.首先,要有一个FFMPEG已编译好的库。
这个我是在LINUX 下用arm-none-linux-gnueabi-gcc编译好的库文件
https://download.csdn.net/download/ye_c1988/10254477 (注意:如果你是要编译出来静态库可执行文件的-static,就要把lib文件下的文件只保留*.a的文件不要有.SO的文件,我是要把它编译成静态库可执行文件)。
2.要安装好的ARM DS-5.26.0的Windows下的文件,我的版本5.26,至于要和谐还是自购,自己搞定。
3.安装windows下的arm-none-linux-gnueabi-gcc 编译器,我选择的是arm-2014.05-29-arm-none-linux-gnueabi.EXE
还有就是在这个兄弟的链接下下载其他版本的也可以。(注意是Windows下的交叉编译工具链)
https://blog.csdn.net/alan00000/article/details/51724252
4.将这个工具链加载到ARM DS-5 里面( )
然后,建立C/C++工程目录树如下:
最后设置编译编译器:(注意: 下的顺序不可变)
在Miscellaneous的 填入-static这样编译出来的可执行文件就可以在Linux平台上和安卓的LINUX-C模式下运行了。
好了,
加入一个main.cpp文件测试代码如下:
/*
* main.cpp
*
* Created on: 2018年6月15日
* Author: yecx-pc
*/
#define __STDC_CONSTANT_MACROS
#ifndef __cplusplus
#define __cplusplus
#endif
#ifdef __cplusplus
extern "C"{
#endif
#include <stdio.h>
#include <unistd.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <time.h>
#include <pthread.h>
#include <fcntl.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/mman.h>
#include <mqueue.h>
#include <semaphore.h>
#include "libavutil/avutil.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "x264.h"
#include "x264_config.h"
#ifdef __cplusplus
}
#endif
int main(int argc, char **argv){
int i;
av_register_all();
avformat_network_init();
while(1){
printf("Welcome to DS-5...%d\n",i++);
sleep(1);
}
return 0;
}
编译DEBUG 下内容:
虽然有几个警告,但是可执行文件已经编译出来了。这些警告没仔细看,如果有知道原因的兄弟可以在留言中告诉我,在此多谢。
5.最后进行RTSM仿真:
如何仿真可以查看ARM DS-5的使用手册,如果有不懂的可以自行度娘,或者其他。。。
虚拟机上的运行结果:
仅以此与大家分享,也作为自己的笔记。
谢谢~
编译arm-linux平台的FFMPEG+X264成库文件
1.首先下载x264的源文件和FFMPEG的源文件都是最新源文件:
git clone http://git.videolan.org/git/x264.git 可以获得x264
http://ffmpeg.org/download.html version 3.4.2
放入你想要的目录文件夹下我的/home/workplace。
解压下载的文件:
tar -xvzf ./下载的压缩文件 -C ./
tar -xvjf ./下载的压缩文件 -C ./
2.编译和安装x264文件
进入/home/workplace/x264
./configure --host=arm-linux --prefix=/opt/wecam/ffmpeg --enable-shared --enable-static --disable-asm
--prefix=/opt/wecam/ffmpeg 为执行make install的安装目录,必须先建立好此文件目录;
cp config.mak.bak config.mak;这一步其实就是修改编译文件中的arm-linux平台用的编译器有以下几项:
CC=arm-none-linux-gnueabi-gcc
LD=arm-none-linux-gnueabi-gcc -o
AR=arm-none-linux-gnueabi-ar rc
在目录下执行make 然后make install
在=/opt/wecam/ffmpeg目录下产生x264文件,其中包括 bin/include/lib三个文件夹,这样就可以将三个文件复制到你要用的用户源码下,就可以调用x264的库文件了。
3.编译和安装FFMPEG源文件
在ffmpeg-3.4.2的文件下执行
./configure --cross-prefix=arm-none-linux-gnueabi- --enable-cross-compile --target-os=linux --cc=arm-none-linux-gnueabi-gcc --arch=arm --prefix=/opt/wecam/ffmpeg --enable-shared --enable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping --enable-libx264 --extra-cflags=-I/opt/wecam/x264/include --extra-ldflags=-L/opt/wecam/x264/lib
这里主要注意这几项:
--enable-static / cflags=-I/opt/wecam/x264/include --extra-ldflags=-L/opt/wecam/x264/lib
PS:这里要提到几个编译问题,我第一次编译的时候,可能是我的编译器安装的不正确,这个我也没有去检查,因为虚拟机是从网站上直接下的已经是平台和环境搞好的了的。
然后我编译的悲剧就来了,首先刚make之后出现找不到linux/perf_event.h文件,这个文件是我的嵌入式平台上EXYNOS4412的Linux系统头文件版本是3.0的,文件就放在usr/include/linux下但就是显示找不到,然后我就设置了在etc/profile/下添加:C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/include:/usr/local/include
接着是能找到perf_event.h的文件了,但悲剧又来了出现了没有办法编译“log10.................asm"w"的错误,这啥意思,就是说log10的数学函数没有找到定义,查了资料说是要加-lm,但是我看了下makefile下的文件中编译的时候确实是加了-lm,然后就没然后了;
想了下应该不是这样的,然后我将C_INCLUDE_PATH注释掉,然后单独将perf_event.h的文件复制到x264下的include文件中,然后执行make,竟然就编译了起来,但是一直显示在编译应用perf_event.h文件是啥也没做的worning,等待几分钟的时间后,编译OK,然后就是make install了,好了。。。。。。
由于部分图片加载问题,完整的操作文档 .docx 如下地址:https://download.csdn.net/download/weixin_41740391/12493202