2017-02-05 10 views
2

こんにちは皆、のFedoraにSFML-アプリをリンクしようとすると25

は、私はいくつかのトラブルSFML library.I'veはそれを動作させるためにさまざまなことを試してみましたが、いつも失敗し使用しようとしています。

  • 私は公式パッケージをダウンロードしましたが、基本的なプログラムをコンパイルしようとしたときには何も動作しませんでした。
  • /src/local/include/にバージョン2.4.1を入れ、/src/local/lib/にlibsファイルを入れました。それは公式パッケージよりも良かった:私は成功した.oを得た。しかしリンク段階では、jpegライブラリをインストールするよう指示されました。だから、私はそれをやったが、それはすでに私のシステム(Fedora 25)にインストールされていて、何も変わっていない。いくつかのフォーラムでは、fedoraが他のライブラリを使ってjpeg画像を作成するのを見た:libjpeg-turboこれはlibjpegのフォークです。私はLinuxにlibjpeg 8をインストールしたのではなく、成功させないように強制するために多くのことを試みました。
  • 私は最後の解決策を試みました:SFMLを自分でコンパイルしてください。だから私はソースをダウンロードし、cmakeを起動し、ラップトップに8つのライブラリのようなものがたくさんあることを見た。これらのライブラリをすべてインストールした後、makeターゲットでSFMLをコンパイルしてインストールします。それはコンパイルフェーズを行なった後はまだ作業が、リンクフェーズは、(私はそれを翻訳)私のために私にあいまいなメッセージを返します:

は/ usr/binに/ ldは:テスト:隠された記号«__cpu_model»を に/usr/lib/gcc/x86_64-redhat-linux/6.2.1/libgcc.a(cpuinfo.o)はDSO によって参照される です。/ usr/bin/ld:最終リンク編集中にエラーが発生しました:間違った値 collect2:エラー:ldが1つの実行ステータスコードを返しました

何が問題なのでしょうか?

+1

「基本プログラムをコンパイルしようとしたときに何もできませんでした」とはどういう意味ですか?私はステップ1で推測しましたが、あなたは 'SFML-devel'または単に' SFML'をインストールしましたか? – mattdm

+0

私は同じ問題があります。私は 'SFML-devel'をインストールしましたが、共有ライブラリはFedoraが提供していない' libjpeg.so.8'を必要とします。私はメンテナが適切にパッケージ化していないと言います。 – Bob

答えて

0

SFMLにはgcc 5.3以降の問題があります。現在、GCCはFedora 25リポジトリのバージョン6.3.1です。あなただけのオープンsrc/SFML/Graphics/CMakeLists.txt SFMLのgitリポジトリを、ダウンロードしたくない場合は

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 

は、ImageLoader.cppコメント(ライン150)であれば条件文を見つけ、で追加された行を追加します。あなたはthis patchを適用すべきですパッチ。結果は次のようになります。

# 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() 
関連する問題