2016-04-17 14 views
3

Ich habe die folgenden Ordner auf meinem git Repo - https://github.com/ryu577/base/tree/master/numerical/c/NumericalRecipiesCode/libMake-Datei arbeitet mit Cygwin unter Windows aber ubuntu nicht

Auf meinem Windows-Rechner, die Cygwin installiert hat, kann ich laufen in diesem Verzeichnis machen, die den Befehl auslöst -

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

Dadurch werden die Dateien tst_libfns.o und fileio.o in das Verzeichnis obj verschoben.

Jetzt zog ich dieses Repository in meine Ubuntu-Maschine und versuchte das Gleiche. Wenn derselbe Befehl dort jedoch generiert wird, gibt es mir den folgenden Fehler:

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 

Bin ich etwas offensichtlich fehlt?

Antwort

3

Ich habe es gerade herausgefunden. Ich hatte die .o-Dateien über Git in das Obj-Verzeichnis gezogen und gcc versuchte irgendwie, die vorhandenen Dateien zu verwenden (die in Cygwin + Windows erzeugt worden waren). Irgendwie scheinen diese .o-Dateien nicht mit Linux kompatibel zu sein. Wenn ich sie lösche und den make-Befehl erneut ausführen, werden die .o-Dateien erneut generiert. Ich denke, die Moral der Geschichte hier ist, dass Binärdateien und ausführbare Dateien, die von GCC in Windows generiert werden, mit Linux nicht kompatibel sind (und ich denke umgekehrt).

+0

Sie können jetzt Ihre eigene Antwort akzeptieren, da es wahrscheinlich Ihr Problem gelöst hat ... – jdarthenay

+0

Definitiv sind sie inkompatibel. Sie können keine Mac-Programme unter Windows, Windows-Programme unter Linux, Linux-Programme auf Mac usw. ausführen (zumindest nicht ohne spezielle Software, die auf "gefälschte" Kompatibilität installiert ist). Außerdem sollten Sie niemals Objektdateien und Binärdateien wie Quellcode an Ihr Quellcodeverwaltungssystem übergeben: Quellcodeverwaltungssysteme sind für den Quellcode. – MadScientist