2016-04-17 9 views
3

I私のGitのレポの次のフォルダがある - cygwinのインストールされている私のWindowsマシンにhttps://github.com/ryu577/base/tree/master/numerical/c/NumericalRecipiesCode/libメイクファイルは、Windows上のcygwinで動作ではなく、Ubuntuの

が、私はコマンドをトリガし、そのディレクトリでmakeを実行することができます -

gcc -o ../bin/lib/tst_libfns ../obj/nrutil.o ../obj/fileio.o ../obj/tst_libfns.o -I ../include -lm 

これにより、tst_libfns.oとfileio.oがobjディレクトリに格納されます。

今、このリポジトリを私のubuntuマシンにプルして、同じことを試しました。しかし、同じコマンドがそこに生成されると、次のエラーが表示されます。

gcc -o ../bin/lib/tst_libfns ../obj/nrutil.o ../obj/fileio.o ../obj/tst_libfns.o -I../include -lm 
../obj/fileio.o:fileio.c:(.text+0x52): undefined reference to `__getreent' 
../obj/tst_libfns.o:tst_libfns.c:(.text+0x10): undefined reference to `__main' 
collect2: error: ld returned 1 exit status 
make: *** [../bin/lib/tst_libfns] Error 1 

明らかなものがありませんか?

答えて

3

私はそれを理解しました。私はobjディレクトリのgitを通して.oファイルを取得していましたが、gccは何らかの形で(Cygwin + Windowsで生成された)既存のファイルを使用しようとしていました。何とかそれらの.oファイルはLinuxと互換性がないようです。それらを削除してmakeコマンドを再度実行すると、.oファイルが再生成されます。私は、WindowsのGCCによって生成されたバイナリと実行可能ファイルはLinuxと互換性がない(そしてその逆も同じだろう)というストーリーの本質を推測しています。

+0

おそらくあなたの問題を解決したので、あなた自身の答えを受け入れることができます... – jdarthenay

+0

確かに彼らは互換性がありません。 WindowsでMacプログラム、LinuxでWindowsプログラム、MacでLinuxプログラムなどを実行することはできません。また、gitのようなソースコード管理システムにオブジェクトファイルやバイナリをコミットしないでください。ソースコード管理システムはソースコード用です。 – MadScientist

関連する問題