C++ 正在尝试链接fedora 25上的SFML应用程序

C++ 正在尝试链接fedora 25上的SFML应用程序,c++,linux,gcc,sfml,fedora-25,C++,Linux,Gcc,Sfml,Fedora 25,大家好, 我在尝试使用SFML库时遇到了一些问题。我尝试了不同的方法使它工作,但总是失败 我下载了官方软件包,但当我试图编译一个basic程序时,没有任何效果 我下载了2.4.1版,并将includes文件夹放在/src/local/include/中,将libs文件放在/src/local/lib/中。这比使用官方软件包要好:我成功地获得了我的.o。但是链接阶段告诉我要安装jpeg库。所以我做了,但它已经安装在我的系统(Fedora25)上,没有任何改变。我在一些论坛上看到fedora使用另

大家好,

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

  • 我下载了官方软件包,但当我试图编译一个basic程序时,没有任何效果
  • 我下载了2.4.1版,并将includes文件夹放在/src/local/include/中,将libs文件放在/src/local/lib/中。这比使用官方软件包要好:我成功地获得了我的.o。但是链接阶段告诉我要安装jpeg库。所以我做了,但它已经安装在我的系统(Fedora25)上,没有任何改变。我在一些论坛上看到fedora使用另一个库来创建jpeg图片:libjpeg turbo,它是libjpeg的一个分支。我尝试了很多方法来强迫我的linux使用libjpeg 8,而不是安装的libjpeg 8,但没有成功
  • 为了让它工作,我尝试了最后一种解决方案:自己编译SFML。所以我下载了源代码,启动了cmake,发现我的笔记本电脑缺少了很多类似8个库的东西。在安装了所有这些库之后,我编译并安装了带有make目标的SFML。完成后,编译阶段仍在工作,但链接阶段为我返回了一条模糊的消息(我翻译了它):
/usr/bin/ld:测试:中的隐藏符号««cpu»模型» /usr/lib/gcc/x86_64-redhat-linux/6.2.1/libgcc.a(cpuinfo.o)是 由DSO引用 /usr/bin/ld:最终链接编辑期间失败:值错误 collect2:错误:ld已返回1个执行状态代码


有人知道出了什么问题吗?

SFML在gcc 5.3及更新版本中存在问题。目前,Fedora25存储库中的GCC版本为6.3.1。你应申请:

diff--git a/src/SFML/Graphics/CMakeLists.txt b/src/SFML/Graphics/CMakeLists.txt
索引6f02fb6..bdc84e7 100644
---a/src/SFML/Graphics/CMakeLists.txt
+++b/src/SFML/Graphics/CMakeLists.txt
@@-148,6+148,13@@add_定义(-DSTBI_FAILURE_USERMSG)
#使用gcc时;否则,保存PNG可能会在stb_图像_写入时崩溃
if(SFML\U编译器\U GCC)
设置源文件属性(${SRCROOT}/ImageLoader.cpp properties COMPILE_FLAGS-fno严格别名)
+
+endif()
+
+#看https://bugs.launchpad.net/ubuntu/+来源/gcc-5/+bug/1568899
+if(SFML_编译器_GCC和构建_共享_库)
+消息(警告“正在为应用解决方案”https://bugs.launchpad.net/ubuntu/+来源/gcc-5/+bug/1568899”)
+列表(附加图形\u EXT\u LIBS“-lgcc\u s-lgcc”)
endif()
#定义sfml图形目标
如果不想下载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()

你能描述一下“当我试图编译一个基本程序时什么都不起作用”是什么意思吗?我有一个猜测-回到步骤1,您是安装了
SFML-devel
还是仅仅安装了
SFML
?我有同样的问题。我安装了
SFML-devel
,但是共享库需要
libjpeg.so.8
,这不是Fedora提供的。我要说的是,维护人员没有将其正确打包。