【问题标题】:Static libpixman-1.a Linking Errors on WindowsWindows 上的静态 libpixman-1.a 链接错误
【发布时间】:2019-07-24 02:25:18
【问题描述】:

我正在尝试在 Windows 上的 MSYS2/MinGW-w64 下构建静态 Cairo library,并且无法链接到 libpixman-1.a 静态库。链接器错误如下:

...
libtool: link: ranlib .libs/libcairoboilerplate.a
C:/Development/MSYS2/mingw32/lib/libpixman-1.a(pixman-x86.c.obj):(.text+0x204): undefined reference to `_pixman_implementation_create_mmx'
C:/Development/MSYS2/mingw32/lib/libpixman-1.a(pixman-x86.c.obj):(.text+0x213): undefined reference to `_pixman_implementation_create_sse2'
C:/Development/MSYS2/mingw32/lib/libpixman-1.a(pixman-x86.c.obj):(.text+0x1b8): undefined reference to `_pixman_implementation_create_ssse3'

该问题似乎与libpixman-1.a 库本身直接相关。我在网上搜索过,但没有发现与上述未定义引用有关的任何问题。我已经向CairoPixman 邮件列表发送了消息,因为这两个项目似乎是相关的。我还通过their IRC channel 联系了开罗项目。我目前仍在等待回复。我还向 MSYS2 项目发送了问题报告。

以下是我用来构建静态libpixman-1.a库的配置命令(使用的Meson Build system我不是很熟悉):

meson --buildtype plain -Ddefault_library=static -Dgtk=disabled ../pixman-0.38.4

MSYS2 使用Arch Linux's build system 端口进行包管理。 pixman 库的原始构建配置和补丁可以是found here

接下来是我尝试用于构建静态 cairo 库的配置:

CFLAGS+=" -Wno-implicit-function-declaration"
../cairo-1.16.0/configure --prefix=/mingw32 \
    --build=x86_64-pc-mingw32 --host=x86_64-pc-mingw32 --enable-win32 --enable-win32-font \
    --enable-png --enable-shared=no --enable-static --enable-gobject --enable-tee \
    --disable-xlib --disable-xcb --enable-fc --enable-ft --disable-silent-rules \
    LIBS="-lharfbuzz -lbz2" ac_cv_prog_GS=${MINGW_PREFIX}/bin/gsc

cairo 库的原始构建配置和补丁可以是found here

最初我还得到了 harfbuzzbzip2 库的未定义引用。但是添加指向它们的显式链接 (LIBS="-lharfbuzz -lbz2") 解决了这些问题。由于链接器已经在尝试链接到 libpixman-1.a 库,因此将其包含在 LIBS 变量中不会改变任何内容。而且因为我的系统上没有共享 pixman 库,所以使用显式静态链接 (-l:libpixman-1.a) 也无济于事。我相信我已经尝试过,但会再试一次,以防万一。

编辑:我找到了用于构建 pixman 库并尝试重建的选项 -Dmmx=disabled -Dsse2=disabled -Dssse3=disabled。也许这些选项仅在库的共享版本中可用?

【问题讨论】:

    标签: c cairo pixman


    【解决方案1】:

    在禁用 MMX、SSE2 和 SSSE3 优化的情况下构建 pixman 库修复了问题并允许我构建仅静态的 cairo 库:

    meson --buildtype plain -Ddefault_library=static -Dgtk=disabled -Dmmx=disabled -Dsse2=disabled \
        -Dssse3=disabled ../pixman-0.38.4
    

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      相关资源
      最近更新 更多