如何将多个源文件转换为一个.a文件

如何解决如何将多个源文件转换为一个.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 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-