Linker 使用mingw交叉编译x86_64-w64的cairo

Linker 使用mingw交叉编译x86_64-w64的cairo,linker,cross-compiling,cairo,mingw-w64,Linker,Cross Compiling,Cairo,Mingw W64,我有一个应用程序再次链接SDL和cairo,我想在ubuntu for win64上交叉编译。我曾经得到过SDL交叉编译,我曾经交叉编译过zlib、libpng和libpixman 但是,我现在在尝试编译时遇到链接器错误: 我应该提到,如果只使用SDL2而不使用任何cairo代码,那么这个测试程序可以正常工作,因此我怀疑我交叉编译的cairo库有问题。我应该如何着手诊断问题?查看您的Makefile,似乎您正在使用普通的pkg配置来发现您的Cairo libCAIRO\u LDFLAGS:=$(

我有一个应用程序再次链接SDL和cairo,我想在ubuntu for win64上交叉编译。我曾经得到过SDL交叉编译,我曾经交叉编译过zlib、libpng和libpixman

但是,我现在在尝试编译时遇到链接器错误:


我应该提到,如果只使用SDL2而不使用任何cairo代码,那么这个测试程序可以正常工作,因此我怀疑我交叉编译的cairo库有问题。我应该如何着手诊断问题?

查看您的Makefile,似乎您正在使用普通的
pkg配置来发现您的Cairo lib<代码>CAIRO\u LDFLAGS:=$(shell$(PKG\u配置)CAIRO--libs)
。这将找到主机库的路径,主机库可能是与目标库不同的体系结构。这样的架构不匹配确实会导致链接器出现奇怪的问题。我认为您应该寻找类似于
usr/x86\u 64-w64-mingw32/bin/pkg config
的东西

其他需要尝试的事情

手动运行编译命令,因为makefile可能正在抑制输出

另外,在运行命令时,将
-v
标志添加到命令行,以获得详细输出,从而更好地找出问题所在

$ make cairotest.exe 
x86_64-w64-mingw32-gcc -o cairotest.o -c cairotest.c -I/usr/x86_64-w64-mingw32/include/SDL2 -Dmain=SDL_main -I/home/jshaw/x86_64-w64/include/cairo -I/home/jshaw/x86_64-w64/include/pixman-1 -I/home/jshaw/x86_64-w64/include/libpng16 
x86_64-w64-mingw32-gcc -o cairotest.exe cairotest.o -L/usr/x86_64-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows -L/home/jshaw/x86_64-w64/lib -lcairo 
collect2: error: ld returned 1 exit status
Makefile:13: recipe for target 'cairotest.exe' failed