clq
浏览(487) +
2021-02-24 13:07:18 发表
编辑
关键字:
c语言项目编译总结.txt
改天有空再传到 github 上了.
---------------------------------------------------------------
1.因为 vc 的编译差异很大.而现在的 gcc 跨平台编译也比较完善,因此这部分暂时都以 gcc 系环境为例.
Windows 下目前可用 mysys2 模拟 gcc 的整个系统环境.
2.如果环境比较统一,其实编译的步骤大体一致.
3.gcc 系的编译一般都是要通过 configure 程序来自动生成相应的头文件.因为目前的开源 c 项目普遍使用头文件的定义来区分不同的平台环境等.
最后生成的各个平台下的源码实际上是不同的(不过一般就是头文件不同而已,在 c 文件中通常会判断某个定义是否存在来选择执行不同的代码部分)
但 configure 的生成也要传入不同的参数以匹配不同的平台.所以现在的开源项目,如 ffmpeg,x264 这些实际上会使用 sh 脚本来包装 configure
命令.所以对于有些项目来说要编译出来不同的东西,不是修改 configure 配置文件,而是修改编译的 sh 脚本.
4.对于 ffmpeg 这样的项目来说,sh 和 configure 脚本实际上不光能选择不同的目标平台,实际上还要选择是否编译出 ffplayer.exe 这样的可执行文件.
所以如果在编译过程中报某个 exe 文件(mac,linux 下当然是别的后缀)编译失败的话也不是太经紧,因为我们一般使用的是它的动态库.
5.各个编译参考文件建议这样使用. 先看总的 c 语言编译总结,再看不同操作系统平台下的总结,再参考具体项目的编译提示,最后参考各种的转贴文章.
6.configure 实际上是一个程序,所以有些网上的教程会有怎样安装它的部分. 它操作的文件名一般为 ,其实也是可指定这个文件名的.
7.基本的的过程1 先设置 path 为空,本来还应该设置各个 shell 变量为空,不过像 xcode,vs 这样的集成工具是需要大量的环境变量的.所以还不能清空全部
shell 的环境变量.不过像 cc , gcc 这样的变量大体可以自己定.
8.基本的的过程2 设置一些变量. 比如 ffmpeg,x264,samba 这样的项目,通常脚本中的编译器名为 CC 所以要将 xcode 这样具体的 gcc 路径赋值给这个变量.
这个变量的设置方法在 configure 和 sh 中还不一样,而且光 sh 脚本中就至少有两种常用的不同方式. 还是比较复杂,所以后面会单独用一个文件来说明.
9.基本的的过程3 设置 include 和 link 路径. 这一步也是很关键的,大多数的编译失败都在这个部分.
实际上这部分还应包括设置 gcc 的路径,不过一般都在设置 CC 变量时做了. 实际上跨平台项目就是设置不同的这三个变量就至少可以编译成功了.
10.基本的编译成功后,对于 ffmpeg,x264 这样的项目来说还要选择不同的目标平台.具体看说明相应文件.
11.对于 ffmpeg,x264 这样的项目来说还会要加入 nasm 这样的东西.其实现在纯 c 代码执行也很快,一般的项目不用汇编也是可以的.至少对于 iphone6s 这样的
老机器来说,纯 c 解码 1080p 的 h264 也是很轻松就可以实现的.可以在 sh 或者 configure 文件中禁用汇编.
12.mysys2 编译出来的东西可以用在老版本的 devc++ 中,不过要改环境,内容还不少.以后独立说明.另外 mysys2 编译出来的东西,如果没有选择 gcc 版本,而是
使用 mysys2 自带的 gcc 的话有可能会在运行时要带上不少的动态库.不过先用自带的 gcc 验证代码和编译结果是个好主意.
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.