gpt4 book ai didi

c++ - .o 文件与 .a 文件

转载 作者:IT老高 更新时间:2023-10-28 12:33:18 27 4
gpt4 key购买 nike

这两种文件类型有什么区别。我看到我的 C++ 应用程序在构建可执行文件期间链接了这两种类型。

如何构建 .a 文件?非常感谢链接、引用资料,尤其是示例。

最佳答案

.o 文件是对象。它们是编译器的输出和链接器/图书馆员的输入。

.a 文件是文件。它们是对象组或静态库,也是链接器的输入。

附加内容

我没有注意到您问题的“示例”部分。通常,您将使用 makefile 来生成静态库。

AR = ar 
CC = gcc

objects := hello.o world.o

libby.a: $(objects)
$(AR) rcu $@ $(objects)

%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@

这会将 hello.cworld.c 编译成对象,然后将它们归档到库中。根据平台的不同,您可能还需要运行一个名为 ranlib 的实用程序来在存档中生成目录。

一个有趣的旁注:.a 文件在技术上是存档文件,而不是库。它们类似于没有压缩的 zip 文件,尽管它们使用更旧的文件格式。由 ranlib 等实用程序生成的目录是使存档成为 的原因。 Java 归档文件 (.jar) 的相似之处在于它们是 zip 文件,具有一些由 Java 归档器创建的特殊目录结构。

关于c++ - .o 文件与 .a 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com