问题标签 [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 - unix ar命令中的文件大小不匹配
我正在开发一个可以读取 unix 归档文件内容的 C 程序。我有一个有趣的错误,也许我不明白,所以我想我会在这里问。
在我看来,存档 c.txt 的文件大小减少了 1。可能是因为双重回报。以下是在 nano 中打开存档文件的内容:
文件大小列为 17,但这只会将我带到 d.txt 之前的 \n。结果是,当我使用具有文件大小的 fseek 扫描文件列表时,我最终在 d.txt 崩溃
下面是 C 中 -t 的代码。这不会崩溃,但 d.txt 的文件名是 \nd.txt
当我尝试创建详细版本时,我真的被这个错误搁浅了。
我想知道我在处理文件时是否做错了什么,或者是否还有其他细微差别我没有得到。
c - 格式化字符串中的内存泄漏,正确的空终止
我想我在终止我的字符串时遇到了问题,因为我无法显示它们。我正在尝试在 C 中重新创建 unix ar 命令,并且几乎已经布置了 -v,但是现在我已经获得了权限,我似乎无法正确打印它们。
我在 perms 数组的末尾添加了一个终止字符,这有助于显示权限,但现在不想打印日期。
当我把它放在一个单独的字符串中时,日期会打印出来,但是当它与其他所有东西在组合格式字符串中时,它就会消失。
示例输出:(偶数行也应该有时间)
c - 文件 IO 似乎没有正确读取
免责声明:这是一个任务。我不是要求明确的代码。相反,我只要求足够的帮助,以便我可以理解我的问题并自己纠正它。
我正在尝试ar
根据家庭作业重新创建 Unix 实用程序。这个任务的大部分处理 C 中的文件 IO,其他部分处理系统调用等。
在这种情况下,我打算创建存档中所有文件的简单列表。正如你所注意到的,我还没有走多远。该计划相对简单:从存档文件中读取每个文件头并仅打印ar_hdr.ar_name
. 其余字段将被跳过fseek()
,包括文件数据,直到到达另一个文件,此时该过程再次开始。如果达到 EOF,则函数简单地终止。
我对文件 IO 没有什么经验,所以我在这个任务上已经处于劣势。我已尽我所能研究实现目标的正确方法,并且我相信我已尽我所能实现了它们。也就是说,我的实现似乎有问题。存档文件中的数据似乎没有被读取,或者至少存储为变量。这是我的代码:
此时,我只希望能够正确读取数据。完成后,我将努力寻找下一个文件。然而,我想重申我的观点,我不是在要求明确的代码——我需要学习这些东西,而让别人为我提供工作代码不会那样做。
gcc - 链接到静态库的两种方式
以下是使用ar压缩的静态库中的函数的几种方法(即 libSOMTEHING.a):
ld -Lpath/to/library -lname myapp.o -o 结果
ld path/to/library/libname.a myapp.o -o 结果
有什么区别?例如,整个库是链接在可执行文件中,还是只是需要的函数?在第二个示例中,切换 lib 和目标文件的位置是否重要?
objective-c - 如何从 iOS 库中提取目标文件(在 Mac 上)?
我有一个第三方 iOS 库,可以在我的应用程序和模拟器中链接并正常运行。我正在尝试从中提取目标文件,以便将其与另一款第三方软件集成,后者使用自己的代码重新打包目标文件。但是,我无法通过提取目标文件ar
;我一直收到错误消息“不适当的文件类型或格式”。
有问题的库是一个包含 armv7、armv7s 和 i386 的胖库。Stocklipo
不知道我机器上的 armv7s,但 Xcode 知道:
我可以通过以下方式成功地将其稀释lipo
:
但是,即使将其稀释后,我也无法使用以下方法对其进行操作ar
:
我在安装了开发工具的 OS X 10.8.2、Xcode 4.6 上。
对于这个麻烦的库,我可以采取任何额外的步骤吗?
更新以回应马丁的评论
file
显示以下内容:
看起来它根本不是图书馆!
linux - 我在哪里可以找到 GNU ar 文件格式规范?
我需要访问一个 ar 创建的文件,但我找不到定义格式的规范文档。有人可以指出我正确的方向吗?
c++ - 未定义的引用(使用静态库的 g++ 编译)
项目文件是这样的:
我首先运行了这两个命令(pwd source/brain/
):
brain.a
我将两者都复制brain.hpp
到source/parser/
. 然后我运行了这个命令(pwd source/parser
):
我得到了这个错误:
源文件:
我该怎么办?
windows - cygwin下使用LIB和ar的区别
在 cygwin 下,我正在尝试使用 libtool 链接一个静态库。该--mode=link cl.exe
行在 .obj 文件上调用 ar cru 以创建 .lib。但是,我知道windows下还有另一个程序LIB。据我了解,它等同于 ar,但是在使用 ar+ranlib 与 LIB 时会有什么不同,如何强制 libtool 使用 LIB 而不是 ar?
c++ - 归档两个 .a 文件
我有一个可以用-D UNICODE
.
当我在没有定义的情况下编译它时,它会创建一堆目标文件,然后我使用以下命令将它们添加到 .a 存档文件中:ar.exe rcs Cpplib.a *.o
然后我使用该定义编译它并使用以下方法归档对象:ar.exe rcs CpplibU.a *.o
其中 U 声明档案是 Unicode 档案。
有没有一种方法可以将两个 .a 文件合并到一个存档中,以便我可以链接到该文件,而不必链接到:
Cpplib_x32.a Cpplib_x64.a Cpplib_x32U.a Cpplib_x64U.a
现在我不介意分别链接到 x32 和 x64,但必须链接到 2 个 x64 和 2 个 x32 有点烦人。
我想知道是否有一种方法可以结合 x32 和 x64 档案或结合非 Unicode 和 Unicode 档案。我两个都不需要。两者任一。
有什么想法,还是我不得不链接到所有 4 个?
c - 出错:在 Cygwin 中构建 64 位 GSL
从这里继续,我正在尝试在 Cygwin 中使用 GCC 构建 64 位 GSL。
对
./configure
(CC=x86_64-w64-mingw32-gcc CFLAGS=-m64 ./configure
) 的调用顺利进行,但在make install
成功处理整个文件夹负载后,对结果的调用./.libs/libgslsiman.a:无法读取符号:存档没有索引;运行ranlib添加一个
collect2: ld 返回 1 个退出状态
Makefile:326: 目标“siman_tsp.exe”的配方失败
导致这种情况的完整电话是
在 siman make 2中制作所有内容:进入目录 `/cygdrive/f/programming/c/libraries/gslCompiled/gsl-1.15/siman'
/bin/sh ../libtool --tag=CC --mode=link x86_64-w64-mingw32-gcc -m64 -o siman_tsp.exe siman_tsp.o libgslsiman.la ../rng/libgslrng.la ../ieee -utils/libgslieeeutils.la ../err/libgslerr.la ../sys/libgslsys.la ../utils/libutils.la -lm
libtool:链接:x86_64-w64-mingw32-gcc -m64 -o .libs/siman_tsp.exe siman_tsp.o ./.libs/libgslsiman.a ../rng/.libs/libgslrng.a ../ieee-utils/ .libs/libgslieeeutils.a ../err/.libs/libgslerr.a ../sys/.libs/libgslsys.a ../utils/.libs/libutils.a
按照这里的建议,我决定在文件
ranlib
的./siman/.libs
目录中运行一个libgslsiman.a
。由于这不起作用,我还尝试使用对ar -t libgslsiman.a
.
但是,这会导致相同的错误。