【问题标题】:Cross-compiling cairo for x86_64-w64 with mingw使用 mingw 为 x86_64-w64 交叉编译 cairo
【发布时间】:2015-05-25 19:35:20
【问题描述】:

我有一个再次链接 SDL 和 cairo 的应用程序,我想在 ubuntu 上为 win64 进行交叉编译。我使用this excellent blog post 进行SDL 交叉编译,我使用another blog post 交叉编译zlib、libpng 和libpixman。

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

$ 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

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

【问题讨论】:

    标签: linker cross-compiling cairo mingw-w64


    【解决方案1】:

    查看您的 Makefile 似乎您正在使用普通的 pkg-config 来发现您的 Cairo 库。 CAIRO_LDFLAGS := $(shell $(PKG_CONFIG) cairo --libs)。这将找到您的 host 库的路径,这可能是与目标不同的架构。像这样的架构不匹配确实会导致链接器出现奇怪的问题。我相信您应该寻找类似usr/x86_64-w64-mingw32/bin/pkg-config 的东西。

    其他可以尝试的东西;

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      相关资源
      最近更新 更多