AIX上的静态链接与pthread

时间:2008-12-13 00:54:12

标签: c++ linker pthreads static-libraries aix

我已经阅读并研究了几天 现在,我决定需要一些外界帮助!

(这个网站看起来很不错,所以我想我会 在这里发表我的问题,看看它是怎么回事)

我们的小公司尚未在AIX上构建我们的应用程序 好几年了,我被分配了这个任务(好的 我喜欢挑战的事情。)

我遇到的问题很容易描述,我可以看到 其他人也正在经历它,虽然我似乎无法做到 找到答案。

如果我将应用程序链接为“非静态”,这意味着我不使用“-static” 在构建命令中,应用程序在开发上运行良好 机器,但不在我们用于的其他AIX机器上 测试

[关于两台机器的快速说明;

dev的:

~$ uname -a
AIX aix3 2 5 000BA50D4C00

试验:

~$ uname -a
AIX aix4 1 5 002459A64C00

如果我链接“-static”,应用程序会在运行时“中断” 抛出异常时在开发机器上:

terminate called after throwing an instance of 'MyAppError'
Segmentation fault      (core dumped)

AND(好像这还不够),应用程序仍然没有 在测试机器上运行:

exec(): 0509-036 Cannot load program ./myapp because of the following errors:
        0509-130 Symbol resolution failed for myapp because:
        0509-136   Symbol _sigqueue (number 65) is not exported from
                   dependent module /unix.
        0509-136   Symbol ra_attachrset (number 95) is not exported from
                   dependent module /unix.
        0509-136   Symbol __rs_pickmcm (number 99) is not exported from
                   dependent module /unix.
        0509-136   Symbol _timer_create (number 122) is not exported from
                   dependent module /unix.
        0509-136   Symbol _timer_delete (number 123) is not exported from
                   dependent module /unix.
        0509-136   Symbol _timer_getoverrun (number 124) is not exported from
                   dependent module /unix.
        0509-136   Symbol _timer_gettime (number 125) is not exported from
                   dependent module /unix.
        0509-136   Symbol _timer_settime (number 126) is not exported from
                   dependent module /unix.
        0509-136   Symbol count_event_waiters (number 159) is not exported from
                   dependent module /unix.
        0509-192 Examine .loader section symbols with the
                 'dump -Tv' command.

我应该在这里注意,我们正在与“-pthead”链接, 我读了好几篇文章说它不行 使用pthread时静态链接。

我的大脑疼。

我非常感谢有关此的任何意见。

1 个答案:

答案 0 :(得分:1)

您遇到的部分麻烦在于您正在构建AIX 5.2并尝试在AIX 5.1上进行测试(uname -a信息显示 - 感谢您将其包含在内)。您通常可以在较旧的平台上构建并在较新的平台上运行,但不是相反。所以,这是你烦恼的开始。

AIX 5.1和5.2都很长;你应该至少在AIX 5.3上,可以说是AIX 6.x。