他のx64_86コンピュータでコンパイルされた共有オブジェクトを使用してプロジェクトを構築する必要があります。ld:Mac OS Xでサポートされていないファイル形式のファイルが作成されました
cc -std=c11 -Wall -Werror -Wextra -pedantic -I./include src/server.c
obj/tftp.o -o bin/server -L./lib64 -lSocketUDP -lAdresseInternet -lpthread
ld: warning: ld: warning: ignoring file ./lib64/libSocketUDP.so, file was
built for unsupported file format (0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00) which is not the architecture
being linked (x86_64): ./lib64/libSocketUDP.soignoring file
./lib64/libAdresseInternet.so, file was built for unsupported file format (
0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00) which is not the architecture being linked (x86_64):
./lib64/libAdresseInternet.so
私のMacのアーキテクチャはx86_64で、共有オブジェクトはx86_64でコンパイルされています。コンパイルは私のLinuxコンピュータで動作します。
ここに私のMakefile:
CFLAGS = -std=c11 -Wall -Werror -Wextra -pedantic -I./include
LDLIBS = -L./lib64
LDFLAGS = -lSocketUDP -lAdresseInternet -lpthread
all: obj/tftp.o bin/server bin/client
obj/tftp.o: src/tftp.c
mkdir -p obj
$(CC) $(CFLAGS) -c $^ -o [email protected]
bin/server: src/server.c obj/tftp.o
mkdir -p bin
$(CC) $(CFLAGS) $^ -o [email protected] $(LDLIBS) $(LDFLAGS)
bin/client: src/client.c obj/tftp.o
mkdir -p bin
$(CC) $(CFLAGS) $^ -o [email protected] $(LDLIBS) $(LDFLAGS)
clean:
$(RM) -r obj
distclean:
$(RM) -r obj bin
ありがとうございました。
両方のプレートフォームのライブラリをコンパイルする方法はありますか? –
@mathieu_b Linuxのボックスから外部のターゲットをクロスコンパイルして、macosの動的ライブラリを構築することができます。あなたはそれがあなたが疑問に思っている場合は、両方のプラットフォームで動作する1つのファイルを生成することはできません。 – casey
@casey申し訳ありませんが、私は図書館の資料を持っていないので、先生がそれを集めました。私は別の解決策を見つける必要があります、ありがとう! –