diary/Kojima/2012-05-21
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[diary/Kojima]]
・Qt-4.8.1と-fvisibility(2)
当初はQtのライブラリをnmで調べると"no symbols"と言われる...
ビルド時にlinux.confで設定されている--strip-unneededを--s...
デバッグシンボルだけを削除するようにしてみたのだけど,
libdbusmenu-qtがコンパイルできない状況は変わらず.
後から分かったけど,--strip-unneededした共有ライブラリの...
nmだけではシンボルが表示されないけど,-Dを指定すると動的...
表示されるので,共有ライブラリをリンクするのに問題は無い...
さて,それでは何が原因か,,と悩んでいたところ,解決は全...
libdbusmenu-qtがビルドできないのは放置して,kdelibs-4.8.3...
configure時にQtが--fvisibility=hiddenでビルドされていない...
/check_qt_visibility.cpp:5:3: エラー: #error QT_VISIBILI...
is not available
...
CMake Error at cmake/modules/FindKDE4Internal.cmake:1295...
Qt compiled without support for -fvisibility=hidden. ...
plugins and linking of some applications. Please fix ...
(try passing --reduce-exports to configure).
Call Stack (most recent call first):
CMakeLists.txt:50 (find_package)
見たことのないタイプのエラーだったのであれこれ調べてみた...
というのはGCC4系で採用された新しいオプションで,
クラス宣言等でシンボルの数が膨大になりがちなC++のライブラ...
内部向けのシンボルを外部には見せなくするためのオプション...
なるほど,g++にはこういうオプションがあったのか,と思って...
Qt-4.7.1ではconfigure_REDUCE_EXPORTS.patchとして,
--- qt-kde-qt/configure 2010-09-07 06:05:01.000000000 +0...
+++ build/configure 2011-02-13 22:29:59.000000000 +0...
@@ -730,7 +730,7 @@
CFG_PRECOMPILE=auto
CFG_SEPARATE_DEBUG_INFO=auto
CFG_SEPARATE_DEBUG_INFO_NOCOPY=no
-CFG_REDUCE_EXPORTS=auto
+CFG_REDUCE_EXPORTS=yes
CFG_MMX=auto
CFG_3DNOW=auto
CFG_SSE=auto
こんなのを当ててたのだけど,4.8.1のビルド時にはこれを外し...
このパッチを当てるようにQt-4.8.1をビルドし直してやったと...
無事libdbusmenu-qtのビルドも通るようになった.
このオプションで,生成されるバイナリがどの程度変るのかと...
libdbusmenu-qtがビルドできなかったライブラリ(NG)とできる...
を比較してみたところ,
NG$ nm -C -D usr/lib64/libQtCore.so.4.8.1 | grep " T " |...
4812
OK$ nm -C -D usr/lib64/libQtCore.so.4.8.1 | grep " T " |...
3699
ということで,1100個くらいシンボル数が減っていて,
どうやら本来は外部には見せるべきでないシンボルを公開して...
libdbusmenu-qtのテストコードのリンクに失敗していた,とい...
また,この設定はパッチにしなくても,kdelibsのエラーメッセ...
configureに-reduce-exports=yesという指定を与えればOKらしい
reduce-exports)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_REDUCE_EXPORTS="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
BLFSのQtのビルド方法(http://www.linuxfromscratch.org/blfs...
にはこの種の指定が無いので,LFSが採用しているGCC-4.7.0で...
自動的に良きに計らってくれるのかも知れないけど,そこまで...
何とかこれでQt-4.8.1ベースのKDEのビルドに取りかかれそうだ...
そろそろ授業準備(今年は2ヶ月遅くなった)でビジーモードにな...
#comment
終了行:
[[diary/Kojima]]
・Qt-4.8.1と-fvisibility(2)
当初はQtのライブラリをnmで調べると"no symbols"と言われる...
ビルド時にlinux.confで設定されている--strip-unneededを--s...
デバッグシンボルだけを削除するようにしてみたのだけど,
libdbusmenu-qtがコンパイルできない状況は変わらず.
後から分かったけど,--strip-unneededした共有ライブラリの...
nmだけではシンボルが表示されないけど,-Dを指定すると動的...
表示されるので,共有ライブラリをリンクするのに問題は無い...
さて,それでは何が原因か,,と悩んでいたところ,解決は全...
libdbusmenu-qtがビルドできないのは放置して,kdelibs-4.8.3...
configure時にQtが--fvisibility=hiddenでビルドされていない...
/check_qt_visibility.cpp:5:3: エラー: #error QT_VISIBILI...
is not available
...
CMake Error at cmake/modules/FindKDE4Internal.cmake:1295...
Qt compiled without support for -fvisibility=hidden. ...
plugins and linking of some applications. Please fix ...
(try passing --reduce-exports to configure).
Call Stack (most recent call first):
CMakeLists.txt:50 (find_package)
見たことのないタイプのエラーだったのであれこれ調べてみた...
というのはGCC4系で採用された新しいオプションで,
クラス宣言等でシンボルの数が膨大になりがちなC++のライブラ...
内部向けのシンボルを外部には見せなくするためのオプション...
なるほど,g++にはこういうオプションがあったのか,と思って...
Qt-4.7.1ではconfigure_REDUCE_EXPORTS.patchとして,
--- qt-kde-qt/configure 2010-09-07 06:05:01.000000000 +0...
+++ build/configure 2011-02-13 22:29:59.000000000 +0...
@@ -730,7 +730,7 @@
CFG_PRECOMPILE=auto
CFG_SEPARATE_DEBUG_INFO=auto
CFG_SEPARATE_DEBUG_INFO_NOCOPY=no
-CFG_REDUCE_EXPORTS=auto
+CFG_REDUCE_EXPORTS=yes
CFG_MMX=auto
CFG_3DNOW=auto
CFG_SSE=auto
こんなのを当ててたのだけど,4.8.1のビルド時にはこれを外し...
このパッチを当てるようにQt-4.8.1をビルドし直してやったと...
無事libdbusmenu-qtのビルドも通るようになった.
このオプションで,生成されるバイナリがどの程度変るのかと...
libdbusmenu-qtがビルドできなかったライブラリ(NG)とできる...
を比較してみたところ,
NG$ nm -C -D usr/lib64/libQtCore.so.4.8.1 | grep " T " |...
4812
OK$ nm -C -D usr/lib64/libQtCore.so.4.8.1 | grep " T " |...
3699
ということで,1100個くらいシンボル数が減っていて,
どうやら本来は外部には見せるべきでないシンボルを公開して...
libdbusmenu-qtのテストコードのリンクに失敗していた,とい...
また,この設定はパッチにしなくても,kdelibsのエラーメッセ...
configureに-reduce-exports=yesという指定を与えればOKらしい
reduce-exports)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_REDUCE_EXPORTS="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
BLFSのQtのビルド方法(http://www.linuxfromscratch.org/blfs...
にはこの種の指定が無いので,LFSが採用しているGCC-4.7.0で...
自動的に良きに計らってくれるのかも知れないけど,そこまで...
何とかこれでQt-4.8.1ベースのKDEのビルドに取りかかれそうだ...
そろそろ授業準備(今年は2ヶ月遅くなった)でビジーモードにな...
#comment
ページ名: