问题标签 [unix-ar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1731 浏览

c - C中静态库中的函数声明

当我尝试使用静态库编译程序时遇到问题。我创建了我的 .c 文件的目标文件gcc -c ft_putstr.c。然后我执行ar -rcs libft.a ft_putstr.o,然后我做gcc main.c -L. -lft,我已经

警告:函数 'ft_putstr' 的隐式声明在 C99 中无效。

二进制文件已创建,但即使它是这样工作的,我也不想要这个警告。如果我-std="c89"在 GCC 上有标志,但我有你使用 C99,它就可以工作。

这是我的主要内容:

这是我的 ft_putstr.c :

0 投票
2 回答
3822 浏览

linker - 我需要“ranlib”/“ar -s”来进行静态链接吗?

ranlib如果我需要/进行静态链接以及为什么需要静态链接,我没有找到任何适当的信息ar -s

假设我有一个由多个模块组成的应用程序。每个模块都有自己的代码文件在自己的文件夹中,目标文件在自己的文件夹中创建:module1/%.c → bin/module1/%.o. 我为每个模块创建一个.a文件:ar -rc bin/module1.a bin/module1/….o. 整个程序使用gcc bin/module1.a … moduleN.a -o bin/app.

在这种情况下,为文件创建索引有.a什么作用?即使我不向文件添加索引,编译和程序也能正常工作。.a但是我发现的每个示例都是ranlib在将最后一个目标文件添加到存档之后调用的。

问题不是 Linux / Mac / Windows 特定的。

0 投票
1 回答
143 浏览

assembly - 我无法在汇编程序中导入符号

我正在尝试为汇编程序编写一个静态库。但是,它不起作用。该库构建良好,但是当我尝试构建程序时,会发生这种情况:

我四处张望,这让我更加困惑。

知道发生了什么吗?

我的代码:

你好.s

你好/Makefile

肌瘤

myasm/Makefile

0 投票
0 回答
99 浏览

c# - 用于将程序集复制到几个应用程序文件夹的 Msbuild?

我有一个 VS 解决方案,其中包含一些要与共享库一起发布的应用程序和公共 API。我在制作这样的 msbuild 文件方面有一些浅薄的经验。

然后我跑

所以所有的程序集都将进入同一个目录。到目前为止,一切都很好。但是,如果我想为每个应用程序压缩文件,或者为 Wix 设置项目收集文件,就会出现问题。

例如,在 MyApplications.sln 中,我有 10 个项目,其中 3 个是应用程序,分别是 AppA、AppB 和 AppC。

我想运行一个 msbuild 文件,该文件将创建 3 个应用程序文件夹,并将程序集复制到那里而无需显式定义依赖关系,因为 Sln 和 csproj 文件已经具备相关知识。我希望 msbuild 每个项目只构建一次。这个怎么做?

0 投票
1 回答
5233 浏览

static-libraries - 将精简档案变成普通档案

我正在构建V8,默认情况下它构建为“瘦”存档,其中.a文件基本上只包含指向文件系统上目标文件的指针,而不是包含目标文件本身。有关详细信息,请参阅man ar

我希望能够把这个库放在一个中心位置,以便其他人可以链接到它,而且提供一个普通的存档文件显然要容易得多,而不是提供一堆目标文件。

如何获取构建产生的精简档案并将它们变成普通档案?我认为这就像枚举精简存档中的目标文件并使用这些文件重建存档一样简单,但我不知道可以使用什么命令来列出存档的目标文件。

0 投票
0 回答
81 浏览

c - 将 ffmpeg 所有 objs 归档到一个库中,可行吗?

我已经构建了 ffmpeg 静态库,生成:libavformat.a、libavcodec.a、libavutil.a、...

在它们的源目录中,生成了所有必需的 objs (*.o)。

我使用 'ar' 将所有这些 obj 归档到一个 libffmpeg.a 中。

命令:ar rc libffmpeg.a *.o。

我注意到,在 diff 目录中有一些 obj 具有相同的名称,例如 libavformat/4xm.o 和 libavcodec/4xm.o。

通过'nm libffmpeg.a',似乎两个obj都在那里?

我不确定。

如果 obj 具有相同的名称并且具有相同的功能符号,则后一个将被替换,对吗?

通过这种“ar”方式,libffmpeg.a 会正常工作吗?因为有太多的符号我无法测试每一个。

感谢帮助!

0 投票
1 回答
2122 浏览

build - 如何将具有自定义扩展名的对象添加到 cmake 库?

我想将一些目标文件添加到 CMake 静态库中,但它们具有自定义扩展名。

这是我尝试过的:

完成后,CMake 调用ar testfile.cxx.o(即完全忽略其他文件)。如何将其包含在存档中?以下是我尝试过的其他一些技巧:

(如果您有兴趣,我正在使用 emscripten 编译器,它可以接受 C/C++ 文件作为源输入,而 JavaScript 文件本质上是“预编译对象”。我想找到一种方法让 CMake 将它们添加到命令行,仅此ar而已!)

0 投票
1 回答
978 浏览

macos - 在 OS X Yosemite 上构建 GCC-4.9.2

好的,我无法在 Apple 的新 OS X Yosemite 上构建 gcc-4.9.2。我不确定是否需要在 OS X 上构建 gnu-gcc 编译器,因为除了 tesseract-3.0.1 和我自己的一些 wxWidgets 应用程序之外,大多数其他软件都可以正常编译。是否存在某些 clang 无法编译的程序/代码功能?

我的构建步骤如下:

我的构建路径和 gcc 源路径不包含任何空格,并且我已将 GMP、MPFR 和 MPC 安装在/usr/local.

我的构建输出是:

配置将构建类型输出为:x86_64-apple-darwin14.0.0,所以我不明白为什么会这样。

预先感谢您的任何帮助。

0 投票
2 回答
144 浏览

c++ - FreeBSD-10/gcc48 ar 命令非常慢

我将服务器升级到 FreeBSD-10/ gcc48,我的项目使用 ar 将子项目放入静态库,现在链接速度非常慢。

使用不同的 ar 标志:

“时间 ar -v -c -u -q ...”:362.62 真实 0.11 用户 0.82 系统

“时间 ar v -c -r -u -s ...”:407.94 真实 0.13 用户 0.80 系统

这必须比以前慢十倍(FreeBSD-8,股票 GCC 编译器)。我能做些什么来改善这一点?GNU Libtool 只是在幕后使用 ar(所以没有帮助),对吧?我应该完全绕过静态库吗?(但是构建 .so 不会花费相同的时间吗?)不用说,这会缩短我的开发周期时间。

0 投票
0 回答
1615 浏览

autoconf - 无法确定ar接口

编译 mpich 时出错。这是什么意思?