我正在寻找一个程序来创建一个C库(即链接和编译文件到一个文件)基于具有以下结构的.h文件和.c文件(它是一个FEC库:www。 openfec.org)。 我正在使用Ubuntu。 我希望它在不手动指定每个文件的情况下执行此操作。 我尝试了WAF,但得到了错误’错误:root:错误:没有名为cflags的模块’。
这是(部分)结构:
fec lib_advanced ldpc_from_file of_code_profile.h of_ldpc_ff.h ... lib_common linear_binary_codes_utils binary_matrix it_decoding ml_decoding statistics of_cb.h of_debug.h of_mem.c of_mem.h of_openfec_api.c of_openfec_api.h of_openfec_profile.h of_types.h
谢谢!!
您必须使用gcc
将C文件编译为对象文件。
然后你必须使用ar r
然后使用ranlib
将对象打包成一个.a库文件。
*nix
系统上的C库(包括所有Linux发行版)都是使用标准工具创建的,这个工具是a)C编译器b)链接器b)ar实用程序c)ranlib实用程序。
C编译器99.9%的时间是GNU C编译器,而链接器ld和实用程序ar
和ranlib
是gnu系统上的binutils包的一部分(99.9%的linux系统)。
ar
和ranlib
用于创建静态库,将已编译的目标文件(* .o文件)放入存档文件libsomething.a
使用ar并使用ranlib索引存档。
可以在gcc编译器内调用链接器来创建具有位置无关代码的动态库,同样已经编译的文件在特殊文件上存档,该文件具有共享对象的.so
扩展名。
静态库用于速度和自包含,它们生成大型可执行文件,其中包含最终可执行文件中的所有依赖项。 如果单个库中有许多更改,要更新它,您将不得不重新编译所有内容。
动态库分别编译和链接可执行文件,它们可以由多个可执行文件同时使用,如果更新了一个库,则只需要重新编译单个库,而不是每个依赖于它的可执行文件。
这些工具的使用是通用的和标准的程序,它们可能因* nix系统到* nix系统的细节而有所不同,但在linux上你基本上总是使用GCC和Binutils软件包。 make,cmake,autotools等forms的额外构建实用程序可用于帮助完成该过程,但始终使用基本工具。
通常在最基本的级别上编写Makefile
脚本,该脚本由make
实用程序解释。 根据您的命令,它可以创建一种或两种类型的库,安装库和可执行文件,卸载它们,清理等等
欲获得更多信息 :
以上就是c/c++开发分享如何从头文件和源文件创建一个C库(用于Ubuntu)?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522191.html