问题标签 [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++ 文件Multiplier.cpp
和相应的头文件,我使用以下命令从中创建了一个库
在一个新目录中,我创建了一个使用该类的Calculator.cpp
(带有相应的头文件) 。Multiplier
头文件Calculator.h
有对应的`#include "Multiplier.h"
头文件Calculator.h
有对应的#include "Multiplier.h"
我将创建的库复制到此目录中,并尝试Calculator.cpp
使用以下命令进行编译:
这给了我这些错误:
我已经搜索了很长时间,但无法弄清楚发生了什么。我正在使用 GCC 4.2.1。
macos - 如何在mac OS中观察静态库的内容?
我在我的 xCode 中创建了一个静态库项目并构建了一个名为 mylib.a 的 .a。有一些代码( .m 文件)和另一个名为 common.a 的静态库文件来通知静态库 nylib.a。但是我怀疑common.a的竞争是否真的包含在mylib.a中。那么如何在 mac OS 中观察 mylib.a 的内容呢?我知道在 Linux 中有一些命令,例如 ar、nm 来完成这个任务。但它不能在 mac OS 中运行。
gcc - 不允许创建一个没有 .c 文件的静态库吗?
我有两个文件->fact.h
和文件夹中main.c
。具有调用函数的 main 函数。我正在使用 ar 命令创建存档 ->/home/snyp1/new
main.c
fact(int x)
fact.h
.a
我在 ubuntu 12.04 上。请让我知道有什么问题。(另外,如果我不使用-L/.../new
,gcc 会说它找不到“lfact”,可能是因为它不在/usr/local/lib
)
编辑:好的,我找到了原因。这是由于我fact.h
用来构建fact.o
然后将其放入库中的事实,它没有按预期工作。所以我现在把它改成了file.c
现在工作正常。我应该提供这些信息,对不起。虽然我不知道为什么会出现这种问题。如果没有至少一个.c
文件,就不能制作库吗?
gcc - 静态库中对象的顺序
我有一个使用多个目标文件的 C 项目,这些目标文件需要按特定顺序链接以查找所有需要的符号。
例如这个命令工作正常(lib2.o 依赖于 lib1.o 等)
但
以对“my_variable”错误的未定义引用结束。
这是一种已知行为,例如可以通过将这些对象添加到链接描述文件中的 GROUP 部分来解决。
现在我想将这些对象作为静态库与我的同事共享。所以...
不幸的是,这会产生相同的未定义引用错误,例如以不正确的顺序指定对象。
我没有找到任何链接器或存档器选项来使其正常工作,即使我认为这个问题应该相对常见,谷歌搜索也没有解决方案。
请问有人知道解决方案吗?
问候简
c++ - g ++创建静态库:无法读取符号存档没有索引
我正在尝试使用 g++ 将许多 SDL 实用程序类分组到 C++ 的静态库中。我正在使用 ubuntu linux 11.10 和 gcc 版本 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)。ar 的版本是 2.21.53.20110810。
由于所有文件都很小,我目前只使用头文件。我提到这一点,以防它与问题有关。此外,大多数标头都使用 -lSDL 编译为目标代码(我不确定这是否正确甚至相关,但无论哪种方式都失败了)。最后,两个不同的类有几个静态成员,在它们自己的文件中定义,以包含在过程的最后步骤中(尝试遵循 ODR)。
问题是,每个文件都被编译成目标代码就好了,然后使用 ar 创建一个存档,但是当我尝试编译主文件并将其链接到我的新库时(就像我正在创建的存档 libDanGfx.a):
g++ -Wall -ansi -pedantic newmain.cpp -L。-lSDL -lDanGfx
我收到此错误:
./libDanGfx.a:无法读取符号:存档没有索引;运行ranlib添加一个
即使在删除所有档案和目标代码后也会发生这种情况。
我已经搜索了该站点,但还没有找到问题的答案。使用 ranlib 根本没有帮助,还尝试将 -m32 提供给我的编译器,但仍然无济于事。我尝试了三台不同的机器,都失败了。
Franky,我正在考虑删除整个归档文件,更新 makefile 并链接到目标文件,但我真的很想知道这里发生了什么,并在此过程中学到一些东西。
我预计会丢失很多信息,所以为了以防万一,我上传了一个包含整个内容的 .tar.gz 文件(只需解压缩并尝试生成文件)。为了您的阅读,所有的 .o 文件都将位于 objects 目录中,并且使用的每个命令都可以在 makefile 中读取。另外,main 应该在屏幕上显示一些无脑的东西(可能是红色方块,因为资源文件没有上传以节省空间,当然,.o 和 .a 文件也被排除在外)。
可以在此链接中访问该文件。
c - 链接到 Snow Leopard 上的精简存档
我正在尝试将结合两个存档库的精简存档链接到 C 程序。
我构建了两个简单的 hello world 函数并使用以下命令构建了一个存档:
然后使用精简存档合并两个存档:
然后用 gcc 编译:
我最终收到一条错误消息:
ld:警告:忽略文件 all_lib.a,文件是为不受支持的文件格式构建的,该文件格式不是被链接的体系结构 (x86_64)
架构 x86_64 的未定义符号:“_func1”,引用自:main.o 中的 _main “_func2”,引用自:main.o 中的 _main ld:未找到架构 x86_64 的符号
如果我尝试将 main.o 与 lib1.a 和 lib2.a 直接链接,一切正常。
我在 Mac OSX 10.6.8 上使用 gcc (MacPorts gcc46 4.6.3_3) 4.6.3 和 GNU ar (GNU Binutils) 2.21。
生成文件
主程序
lib1.h
lib2.h
lib1.c
lib2.c
c++ - 用于创建静态库的链接库
我在 Lib_file.h 和 Lib_file.cpp 中编写了一些代码。我希望将此代码转换为静态库。我能够编译代码(使用命令g++ -I <necessary include files> -o Lib_file.o Lib_file.cpp
)来获取 Lib_file.o。我还可以使用该ar rvs Lib_file.a Lib_file.o
命令将其添加到存档中。现在,当我尝试使用 -L 选项在其他代码中使用这个库时,我得到未定义的引用错误。此错误指向我的 Lib_file.o 中的代码。所以我的问题是如何让我的 Lib_file.cpp 中的代码链接到它使用的库。
到目前为止,我已经尝试了以下选项
一、创建Lib_file.o后,我尝试了以下命令
g++ -L<include path> -l<.a files> Lib_file.o
。在执行此命令时,我收到以下错误
二、我尝试使用 ar 命令将所有必要的 .a 文件与我的 Lib_file.o 一起包含在新存档中。当我尝试将 Lib_file.a 库与我的应用程序一起使用时,仍然出现未定义的引用错误
请帮帮我
java - LOCAL_SRC_FILES 指向丢失的文件
我正在做一个增强现实程序。我被交给了这个项目,我是 cygwin 和 android 编程的新手。我必须使用 cygwin 来编译我的一个 cpp 文件。但是,当我在 cygwin 上进行 ndk-build 时,会出现此错误:
这是我的 android.mk 代码:
我不是编程专家,所以我需要一些指导。
linux - 归档文件的归档
可能重复:
如何将两个“ar”静态库合并为一个
我有多个存档文件如下
所有这些库都有一堆 obj 文件。
我想为所有这些库创建一个存档。
但它不起作用。它说我需要提取所有这些 .a 文件,一旦我拥有所有这些 obj 文件,我可以像下面那样做
但我不想做所有这些讨厌的事情。我想要明确的解决方案,例如
我想要的解决方案与此类似,因为我在此示例中给出的文件夹结构并不是那么简单。
任何帮助,将不胜感激
c++ - 通过 ar 链接后丢失的专用成员函数
考虑以下在一个更大的项目中重现问题的最小示例:
规格.h:
其他.cpp:
规范.cpp:
汇编:
问题:
为什么会这样?它会以某种方式被剥夺吗?lib.a 和直接使用目标文件有什么区别?:-)
谢谢!