如何解决如何将多个源文件转换为一个.a文件
| 我刚刚发现,代码块(和MingW编译器)仅需要.a库文件,而不是.lib,这是将.lib转换为.a文件的最简单方法...任何教程等都将受到赞赏。 编辑 让我稍微修改一下我的问题,如何将大量源文件转换成一个.a存档文件。解决方法
.lib(和.a也)具有两种不同的功能:
作为程序依赖的共享Dll的导入库。
作为从一个或多个从源编译的目标文件创建的归档库。
您实际上并没有在问题中指定要使用的表单。如果您要执行第二种形式,则必须按照Persson的建议在gcc下将源代码构建为静态库,因为msvc工具使用的库格式不兼容。
但是,如果您正在使用第一种表格,则有一些好消息。 gcc的MinGW端口应能够与使用msvc开发工具创建的coff格式导入库透明地工作。您可以做的就是简单地将“ 0”导入重命名为“ 1”,并将其传递给链接器,就像其他任何“ 2”文件一样。链接器应该能够整理其实际格式。
我已经使用最新的夜间代码块版本在tdm-gcc-4.5.2下对其进行了测试,它似乎可以正常工作。
编辑:合并我的评论作为答案的一部分。
如果您正在使用第二种形式,并且需要从源代码构建静态库,则步骤大致如下:
如果存在现有的msvc项目,则可以将其导入代码块中,以此作为起点。它将在File-> Import Project-> Visual Studio等下。
如果没有可用的方法,那么从头开始创建一个新的C :: B项目并不是很难。只需转到File-> New-> Project,选择\'Static Library \'作为项目类型,然后添加所需的任何源文件。如果库是用半便携式的东西编写的,则应该编译时不会有太多麻烦。
, 为了回答特定的问题,如何将多个源文件转换为单个归档文件以进行静态链接;这是一个两步操作。您必须首先将源文件编译为目标文件,然后将目标文件转换为归档文件。
如果您的MinGW安装中装有MSYS,建议您使用它。如果没有,您仍然可以使用Windows命令提示符cmd.exe。
确保您的MinGW / bin目录是PATH环境变量的一部分,以便可以从任何地方调用编译器。
从命令行进入包含源代码的目录。从那里输入命令
mingw32-gcc -O2 -c [files] -I[header directory]
您应该专门将ѭ4命名为-c a.cpp b.cpp c.cpp
,也可以使用*.cpp
识别它们。 [header directory]
是源.h文件相对于您的位置。通常,源文件将单独位于一个名为/ src的目录中,而头文件位于一个名为/ include的姊妹目录中。您将该目录称为-I../include
。如果头文件位于/ src目录中名为/ include的目录中,则该目录为“ 9”。
生成.o文件后,键入命令
ar rcs lib[something].a [files]
用库名替换[something]
。这是将在Code :: Blocks中的“链接库”对话框中使用的名称。文件是您之前创建的目标文件的名称(a.o,b.o,c.o),或者,如果目录中没有不相关的目标文件,则可以输入ѭ12。
这将导致在目录中创建存档文件。现在,您可以将其放置在正确的目录中(可能是/ include的姊妹目录,称为/ lib),并将该目录添加到Linker Search Directories下的Code :: Blocks配置中。然后,您必须记住为项目添加实际的库。
, MinGW可以使用.LIB文件。以下链接到使用MS编译器创建的.LIB:
gcc b.c a.lib
在代码块中,将库添加到对话框Project|Build Options...
中,然后转到Linker Setting
s选项卡并添加到Link Libraries
框中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。