その呼び出しのラッパーを記述できるように、呼び出しgetnameinfoの署名を一致させる必要があります。残念ながら、署名はホスト間で異なります。
エラーが発生する最新のCentOS 6.3でコンパイルしようとするまで、物事は機能していました。
error: conflicting types for 'getnameinfo'
は?
最後の引数 flags は、CentOS (glibc-headers-2.12-1.80) では unsigned int としてリストされていますが、Fedora (glibc-headers-2.15-58) では単なる int です。(両方のホストの man ページには、int である必要があると記載されていることに注意してください。)
extern int getnameinfo ( /*cut*/, unsigned int __flags);
対
extern int getnameinfo ( /*cut*/, int __flags);
いくつかの検索により、標準がフラグ引数のタイプを変更したと私は信じています。
ホストの定義と一致するように、関数内のフラグのタイプを変更する必要があるようです。この問題に対処する最善の方法は何ですか? これはautoconfタイプの問題ですか、それとももっと簡単な解決策がありますか? コンパイラ (gcc) に利用できるマクロがあることを期待しましたが、何も見つかりません。