问题标签 [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.
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 :
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 特定的。
assembly - 我无法在汇编程序中导入符号
我正在尝试为汇编程序编写一个静态库。但是,它不起作用。该库构建良好,但是当我尝试构建程序时,会发生这种情况:
我四处张望,这让我更加困惑。
知道发生了什么吗?
我的代码:
你好.s
你好/Makefile
肌瘤
myasm/Makefile
c# - 用于将程序集复制到几个应用程序文件夹的 Msbuild?
我有一个 VS 解决方案,其中包含一些要与共享库一起发布的应用程序和公共 API。我在制作这样的 msbuild 文件方面有一些浅薄的经验。
然后我跑
所以所有的程序集都将进入同一个目录。到目前为止,一切都很好。但是,如果我想为每个应用程序压缩文件,或者为 Wix 设置项目收集文件,就会出现问题。
例如,在 MyApplications.sln 中,我有 10 个项目,其中 3 个是应用程序,分别是 AppA、AppB 和 AppC。
我想运行一个 msbuild 文件,该文件将创建 3 个应用程序文件夹,并将程序集复制到那里而无需显式定义依赖关系,因为 Sln 和 csproj 文件已经具备相关知识。我希望 msbuild 每个项目只构建一次。这个怎么做?
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 会正常工作吗?因为有太多的符号我无法测试每一个。
感谢帮助!
build - 如何将具有自定义扩展名的对象添加到 cmake 库?
我想将一些目标文件添加到 CMake 静态库中,但它们具有自定义扩展名。
这是我尝试过的:
完成后,CMake 调用ar testfile.cxx.o
(即完全忽略其他文件)。如何将其包含在存档中?以下是我尝试过的其他一些技巧:
(如果您有兴趣,我正在使用 emscripten 编译器,它可以接受 C/C++ 文件作为源输入,而 JavaScript 文件本质上是“预编译对象”。我想找到一种方法让 CMake 将它们添加到命令行,仅此ar
而已!)
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
,所以我不明白为什么会这样。
预先感谢您的任何帮助。
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 不会花费相同的时间吗?)不用说,这会缩短我的开发周期时间。
autoconf - 无法确定ar接口
编译 mpich 时出错。这是什么意思?