奇妙なG ++ / ARコンパイルの問題

奇妙なG ++ / ARコンパイルの問題

dpkgCygwinでコンパイルしてAPTするようにパッチセットを作成しています。ほとんどすべてがうまく機能していますが、説明できないar奇妙な動作が発生しています。g++

APTのデフォルトのMakefileは、ライブラリのかなり標準的な→→  .cc フローをサポートするためにクールなラッパーを使用し、それからベースコードに関連付けられます。 Linuxでは非常にうまく動作します。しかし、Cygwinでは、リンカステップは少し異なるコマンドを使用し、私が理解できない方法で失敗します。.o.a

なぜこのようなことが起こるのでしょうか?

g++ -g -O2 \
    -L../ビルド/bin \
    -o ../build/bin/apt\
    ../build/obj/cmdline/apt.o\
    ../build/obj/apt-pkg/*.o\←(これは違います。)
    -lapt-private-lbz2-liconv-lintl-llzma-lz

私のシステムでは動作しますが、

ar rcs ../build/bin/libapt-pkg.a ../build/obj/apt-pkg/*.o(これは違います。)
g++ -g -O2 \
    -L../ビルド/bin \
    -o ../build/bin/apt\
    ../build/obj/cmdline/apt.o\
    -lapt-pkg\←(これは違います。)
    -lapt-private-lbz2-liconv-lintl-llzma-lz

いいえ? 2番目のステップを実行すると、libapt-pkg.aビルドは正常に機能しますが、そのg++ステップで次の形式のエラーが発生します。

$ g++ -g -O2 -L../build/bin -o ../build/bin/apt ../build/obj/cmdline/apt.o -lapt-pkg -lapt-private -lbz2 -liconv -lintl -llzma -lz 2>&1 | head
../build/bin/libapt-private.a(private-upgrade.o): In function `CacheFile':
./apt/apt-private/../build/include/apt-private/private-cachefile.h:47: undefined reference to `pkgCacheFile::pkgCacheFile()'
./apt/apt-private/../build/include/apt-private/private-cachefile.h:47:(.text+0x1e): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `pkgCacheFile::pkgCacheFile()'

上記の2つのコマンドシーケンスは機能的に同じでなければなりませんか?違いは何ですか?

関連情報