centos交叉编译?交叉编译命令

大家好,centos交叉编译相信很多的网友都不是很明白,包括交叉编译命令也是一样,不过没有关系,接下来就来为大家分享关于centos交叉编译和交叉编译命令的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

FFmpeg4.2.2 交叉编译

这两天一直在编译FFmpeg库,实话真是踩坑不少,也知道了遇见问题该如何排错,所以还是打算记录下,也算是一个总结.

配置环境:使用CentOS 8系统,并下载了android-ndk-r17c和ffmpeg-4.2.2版本.务必下载linux版的NDK,通过wget命令下载到Linux系统中.

配置参数:使用./configure--help查看帮助选项,根据这些选项配置FFmpeg脚本.编译过程就是对配置的修改.

学习资源:推荐相关学习资料,免费报名课程,链接在文章中.提供音视频免费学习地址,包括FFmpeg、WebRTC、RTMP、NDK、Android音视频流媒体高级开发等.

编译脚本示例:编写Shell脚本用于动态配置,如针对arm64-v8a架构.遇到的坑包括arm-linux-androideabi-gcc无法创建可执行文件,以及config.mak文件未生成等问题,解决方法在文章中详细说明.

生成目标文件:生成指定架构的库文件,如arm64-v8a.生成后在lib、include、share目录下存放相关文件.若未生成,检查配置问题并查看config.log获取错误信息.

库文件下载与压缩:可以使用其他工具下载或通过命令如lrzsz下载生成的库文件.将库文件和头文件复制到对应目录,修改CMakeLists.txt和build.gradle文件以适应Android环境.

移植与测试:移植FFmpeg库到Android中,修改CMakeLists.txt以指定输出的ABI,添加ndk闭包配置以避免混淆不同架构的库,并在cpp中添加测试代码以验证编译与移植成功.

总结:在编译FFmpeg的过程中,会遇到很多坑,每个版本的Shell脚本编写方式都有所不同.建议先复习Shell相关知识,参考教程和踩坑经验以顺利编译.

centos7怎么编译安装gcc-c++

方法/步骤

1

yum install glibc-static libstdc++-static-y

安装c和c++的静态库(据说如果系统中缺少libc.a和libstdc++.a编译时会出错,但是我没有那么多闲情逸致去试,实践过的朋友可以回复一下,分享一下经验,让大家都长长见识)

2

下载解压gcc,我的gcc目录是gcc-4.8.0

3

进入gcc目录,执行:

./contrib/download_prerequisites

这个神奇的脚本文件会帮我们下载、配置、安装那三个依赖的库。可以节约我们大量的时间和精力。

4

你以为这三个库自动下载了、自动make install了就没事了吗?错!

很多人在编译gcc的时候出现各种奇奇怪怪的错误就是这步没有做好。

它们还不在.so文件的搜索路径里面,需要加进去,最后切记切记一定要执行一下ldconfig。

大致做法为:

1,找到你的共享库文件被install到哪个目录了(updatedb+locate命令)。

2,如果你的库不是直接放在/lib或/usr/lib下,需要修改/etc/ld.so.conf文件,加入你的共享库的路径

3,如果在2中添加了共享库路径,切记要执行一下ldconfig,更新响应cache文件让系统能找到你的共享库。

5

建立临时目录,这个目录用以存放编译时的大量临时文件,是文档要求中必须的。

我是在gcc-4.8.0下建立了一个名为gcc-build-4.8.0的目录,进入它。

mkdir gcc-build-4.8.0

cd gcc-build-4.8.0

配置gcc编译选项

6

强烈建议阅读INSTALL目录下的说明文档,尤其是configure.html,以确定你的编译选项。

比较基本的选项有--enable-languages,说明你要让你的gcc支持那些语言,--disable-multilib不生成编译为其他平台可执行代码的交叉编译器。--disable-checking生成的编译器在编译过程中不做额外检查,也可以使用--enable-checking=xxx来增加一些检查。

网上还说了什么--with-gmp、--with-mpfr、--with-mpc这三个选项,但是如果你3,4步做好了,就不要配了,反之你还是老实点吧别抱侥幸心理了。

调用gcc-4.8.0目录下的configure文件:

例如:

../configure--enable-checking=release--enable-languages=c,c++--disable-multilib

7

执行

../make#不解释

执行编译命令(#在8核的虚拟机上进行编译,每个核分配2个编译任务)

make-j16

make install编译过程CPU核基本100%占用,整个编译用时11分50秒。

检查gcc版本

#你就等吧少年,建议晚上睡觉前做

当然上面三步一定要在前一步顺利结束的情况下进行,如果哪一步出错了,结果都显示error了,就不要再做后面的了。在shell的输出里搜索"error"看具体的出错点是什么,baidu、google一下为什么。

如果你求稳的话,可以在make install之前先make check一下。

编译或安装Glib 2.0包的三种方式

本文总结了三种编译或安装Glib 2.0包的方法。具体操作如下:

首先,介绍在CentOS 7中手工编译Glib 2.0的过程。此过程较为复杂,包括完成编译前的准备工作,如确定系统版本,安装依赖包(如libffi、zlib、pcre等),以及解开源码包等步骤。之后,使用meson进行编译,再通过ninja构建并安装Glib 2.0,最后验证编译结果。

其次,将编译通过的Glib 2.0包部署到相同架构的系统中。此步骤相对简单,主要涉及在目标系统中打包Glib 2.0包,检查内核版本,然后将包拷贝至目标系统并解压,添加到临时PKG环境目录,最后验证编译结果。

最后,直接在系统中安装Glib 2.0包。此方法最为简便,只需验证系统中是否安装有Glib 2.0库包,如果未安装,则使用相关命令进行安装,安装完成后使用pkg-config查阅库包版本,并验证编译结果。

在实际操作中,三种方法均在不同环境下进行了验证,包括CentOS、Debian、Kali等,均能成功编译或安装Glib 2.0包。然而,Glib 2.76版本的编译存在问题,未能成功编译。对于交叉编译的尝试并未提及,但有提及计划进行。

整体而言,三种方法各有优缺点,选择方法时需根据实际情况和需求进行权衡。操作过程中,也需关注依赖包的安装、环境的设置以及编译过程中的日志信息,以确保成功编译或安装Glib 2.0包。

阅读剩余
THE END