2

大家好,

我在尝试使用 SFML 库时遇到了一些麻烦。我尝试了不同的方法来使其工作,但总是失败。

  • 我下载了官方包,但是当我尝试编译一个基本程序时没有任何效果。
  • 我下载了 2.4.1 版本并将包含文件夹放在/src/local/include/中,并将 libs 文件放在/src/local/lib/中。这比使用官方包要好:我成功获得了我的 .o。但是链接阶段告诉我要安装 jpeg 库。所以我做到了,但它已经安装在我的系统(Fedora 25)上并且没有改变任何东西。我在一些论坛上看到 Fedora 使用其他库来创建 jpeg 图片:libjpeg-turbo,它是 libjpeg 的一个分支。我已经尝试了很多方法来强制我的 linux 使用 libjpeg 8 而不是安装的那个,但没有成功。
  • 为了使它工作,我尝试了最后一个解决方案:自己编译 SFML。所以我下载了源代码,启动了 cmake,发现我的笔记本电脑上缺少了很多东西,比如 8 个库。安装完所有这些库后,我使用 make 目标编译和安装 SFML。完成后,编译阶段仍在工作,但链接阶段为我返回了一条晦涩的消息(我翻译了它):

/usr/bin/ld: 测试: /usr/lib/gcc/x86_64-redhat-linux/6.2.1/libgcc.a(cpuinfo.o) 中的隐藏符号 « __cpu_model » 被 DSO /usr/bin/ld 引用: 最终链接编辑失败 : 错误值 collect2: 错误 : ld 已返回 1 个执行状态码

有谁知道怎么了?

4

1 回答 1

0

SFML 与 gcc 5.3 及更高版本存在问题。目前 GCC 是 Fedora 25 存储库中的 6.3.1 版本。你应该应用这个补丁

diff --git a/src/SFML/Graphics/CMakeLists.txt b/src/SFML/Graphics/CMakeLists.txt
index 6f02fb6..bdc84e7 100644
--- a/src/SFML/Graphics/CMakeLists.txt
+++ b/src/SFML/Graphics/CMakeLists.txt
@@ -148,6 +148,13 @@ add_definitions(-DSTBI_FAILURE_USERMSG)
 # when gcc is used; otherwise saving PNGs may crash in stb_image_write
 if(SFML_COMPILER_GCC)
     set_source_files_properties(${SRCROOT}/ImageLoader.cpp PROPERTIES COMPILE_FLAGS -fno-strict-aliasing)
+
+endif()
+
+# see https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1568899
+if(SFML_COMPILER_GCC AND BUILD_SHARED_LIBS)
+    message(WARNING "Applying workaround for https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1568899")
+    list(APPEND GRAPHICS_EXT_LIBS "-lgcc_s -lgcc")
 endif()

 # define the sfml-graphics target

如果您不想下载 SFML git 存储库,只需打开src/SFML/Graphics/CMakeLists.txt,找到带有 ImageLoader.cpp 注释的 if 条件语句(第 150 行)并附加补丁添加的行。最终结果应如下所示:

# ImageLoader.cpp must be compiled with the -fno-strict-aliasing
# when gcc is used; otherwise saving PNGs may crash in stb_image_write
if(SFML_COMPILER_GCC)
    set_source_files_properties(${SRCROOT}/ImageLoader.cpp PROPERTIES COMPILE_FLAGS -fno-strict-aliasing)
endif()

# see https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1568899
if(SFML_COMPILER_GCC AND BUILD_SHARED_LIBS)
    message(WARNING "Applying workaround for https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1568899")
    list(APPEND GRAPHICS_EXT_LIBS "-lgcc_s -lgcc")
endif()
于 2017-06-05T15:40:34.967 回答