aix - 从 Linux 确定 AIX 的库存档是 32 位、64 位还是两者兼而有之

标签 aix

在 AIX 上,我会运行:

ar -X32 -t libdb2.a

并检查输出以确定存档中是否有 32 位对象。与 -X64 类似,用于检查 64 位对象。但是,如果我在另一个平台上,并且需要检查存档以查看它有什么怎么办?通常我在需要检查时使用 Linux,但我也可以轻松使用 Solaris 或 HP-UX。

我曾经检查过 shr.o 和 shr_64.o,因为这是正在编译的内容,但它们开始出现在存档中的实际消息中,因此它们的可靠性已经下降到我收到误报。

如果有人有指导,最好是我可以用 perl 做的事情,那就太好了。

最佳答案

我认为没有简单的方法。如果创建两个 AIX 归档文件,一个 32 位和一个 64 位,如下所示:

$ cat a.c
int foo (void) { return 42; }
$ xlc -q32 a.c -c -o a32.o
$ xlc -q64 a.c -c -o a64.o
$ ar -X32 cr a32.a a32.o
$ ar -X64 cr a64.a a64.o

你最终得到的文件不是 linux ar 可读的格式:

$ file a32.a a64.a 
a32.a: archive (big format)
a64.a: archive (big format)
$ ar t a32.a
ar: a32.a: File format not recognized
$ ar t a64.a
ar: a64.a: File format not recognized

我尝试使用 strings 查看文件中是否有任何明显的内容,但一无所获。您剩下的唯一选择是构建一个针对 AIX 的 binutils 程序包(下载 binutils,使用选项 --target=powerpc-ibm-aix5.3 进行配置,运行 make,瞧瞧:你在那个构建树的某处有一个名为 powerpc-ibm-aix5.3-ar 的工具。

关于aix - 从 Linux 确定 AIX 的库存档是 32 位、64 位还是两者兼而有之,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1705421/

相关文章:

Linux:如何找到守护进程和僵尸进程的列表

Java 未正确将字符串转换为长对象

java - AIX 服务器中的 IBM java 堆内存问题

c++ - std::to_string is not returned 在 aix 中声明编译错误

java - 管辖权政策文件未由受信任的签名者签名......?

c++ - 为什么这个函数级静态变量在 AIX 和 Solaris 中不是线程安全的?

Fortran 错误 : Unit connected to formatted file

linux - 使用 find 选项和 -mtime +7*365 得到不同的结果

c++ - AIX unix 服务器上的 g++ 编译错误

linux - 数据库备份未写入光盘,空间不足?