gpt4 book ai didi

c++ - 尝试在 fedora 25 上链接 SFML 应用程序

转载 作者:太空狗 更新时间:2023-10-29 12:41:28 25 4
gpt4 key购买 nike

大家好,

我在尝试使用 SFML 库时遇到了一些问题。我尝试了不同的方法来让它工作但总是失败。

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

/usr/bin/ld: test: hidden symbol « __cpu_model » in /usr/lib/gcc/x86_64-redhat-linux/6.2.1/libgcc.a(cpuinfo.o) is referenced by DSO /usr/bin/ld : Failure during final link editing : Wrong value collect2: error : ld has returned 1 execution status code

有人知道怎么回事吗?

最佳答案

SFML 在 gcc 5.3 及更新版本中存在问题。当前 GCC 在 Fedora 25 存储库中是 6.3.1 版。你应该申请 this patch :

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()

关于c++ - 尝试在 fedora 25 上链接 SFML 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42055757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com