1

私はこれを数日間読んで調査してきましたが、外部からの支援が必要だと判断しました。

(そしてこのサイトはいい場所のようだったので、ここに質問を投稿してどうなるか見てみようと思いました)

私たちの小さな会社は、AIXでアプリケーションを数年間構築しておらず、私にはこのタスクが割り当てられています(私が挑戦するのが好きなのは良いことです)。

私が抱えている問題は簡単に説明でき、他の人もそれを経験していることがわかりますが、答えは見つからないようです。

アプリを「非静的」にリンクすると、ビルドコマンドで「-static」を使用しない場合、アプリは開発マシンでは正常に実行されますが、テストに使用する他のAIXマシンでは実行されません。

[2台のマシンに関するクイックノート;

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)

そして(それだけでは不十分であるかのように)、アプリはまだテストマシンで実行されません:

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を使用する場合、静的にリンクすることはできませんという記事をいくつか読んだことがあります。

脳が痛い。

これについてのご意見をいただければ幸いです。

4

1 に答える 1

1

問題の一部は、AIX 5.2 でビルドし、AIX 5.1 でテストしようとしていることにあります (uname -a情報はそれを示しています - 含めてくれてありがとう)。通常、古いプラットフォームでビルドして新しいプラットフォームで実行することはできますが、その逆はできません。だから、それがあなたの悩みの始まりです。

AIX 5.1 と 5.2 はどちらも長い歴史があります。少なくとも AIX 5.3 を使用し、おそらく AIX 6.x を使用する必要があります。

于 2008-12-13T03:20:46.137 に答える