1 名前:名無しさん@お腹いっぱい。 [02/04/11 05:24.net] 奥深さの前に使い方がさっぱり分からん。教えて下さい。 関連サイトは>>2
41 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/07 18:55.net] >>40 とりあえずconfigureしてlog見るんじゃだめなの? Common Lisp知らないからいい加減なこといっているけど。
42 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/10 18:50.net] コンパイル型言語じゃないからね、Lispの「メモリダンプ」とかって独特なんです。 で、どんなコマンドが実行されてるんだか (というか、山ほど実行されてるコマンドのうちどれが重要なのか)分からない。
43 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/10 21:21.net] いろいろ大変なんですね。LispはEmacsのしか知らないし、 AM_PATH_LISPDIR使っているものしか見たこと無いんで、 役に立たずですまんです。 # autoconfにもLispファイルがあります。
44 名前:名無しさん@お腹いっぱい。 mailto:age [03/03/19 10:04.net] Autoconf,Automake,Libtoolを解説してる本って少ないながらも一応あるようですけど, どんなもんでしょう?いい本なのでしょうか?
45 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/19 20:26.net] 多分あの本だと思いますがいい本です。ただし、最新のAutoconf、Automakeを 利用するとちょっと戸惑うかもしれません。セレンディップのGNOMEプログラ ミングという本にもこれらの解説があります。
46 名前:名無しさん@お腹いっぱい。 [03/03/19 22:57.net] オーム社の本の事ですか?
47 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/19 23:47.net] >>46 そうだと思う。 んでも、少々高いから、漏れは立ち読みで逝こうかとw
48 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/19 23:59.net] やっぱりm4マクロの勉強からかな
49 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/28 06:27.net] >>48 勉強ってほどのもんでもない。
50 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/04 19:56.net] 2割、3割はあたりまえ。
51 名前:山崎渉 mailto:(^^) [03/04/17 12:14.net] (^^)
52 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
53 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 03:41.net] CVSにconfigureまで突っ込んでるプロジェクトもたまに ありますが、ふつうはどこまで含めるものなんですか。
54 名前:名無しさん@お腹いっぱい。 [03/05/15 14:14.net] FreeBSD PORTS なんかだと、 autoconf{,213,254,257} や automake{,14,16,17} や libtool{,13,14} のように、 古いバージョンも後生大事に用意されていますよね。 これは何故なんでしょうか? 何か後方互換性に大きな問題でもあるのでしょうか?
55 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 16:23.net] はい。
56 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 16:35.net] >>55 なるほど。 そうだとして、この場合はそれぞれこのバージョンを使えば良い/いけない、 といった判断は一般にどのような基準に基づいて行えば良いのでしょうか?
57 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 17:36.net] >56 違うバージョンを使うと動かないので悩む必要はありません。
58 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 19:54.net] >>57 う〜ん、やっぱり良くわからないです。 とどのつまり、知りたいのは、 PORTS や package のような仕組みの無い OS に automake や autoconf を入れる場合、 とりあえずそれぞれ最新のバージョンのを入れておけば問題ないものなんでしょうか? それとも、古いバージョンのも入れておいた方が良いのでしょうか?
59 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 19:59.net] >>53 configure.acまでと言いたいが、今のAutotoolsのバージョン間の互換性から、 configureまで入れておいたほうが無難。誰でもcheckoutできるプロジェクト なら、「autoconfを実行するとエラーが出ます」というレポートが大量発生す る可能性が高い。しかし、confugure.acやMakefile.amを書き換えると同じ状 況になるんだよね。 AM_INIT_AUTOMAKE([1.7])とかAC_PREREQ(2.57)とか書けばいいのかな?
60 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 20:06.net] >>58 Autotoolsを自分のプロジェクトで使うのなら、最新を入れて問題ないです。 他のプロジェクトに参加するなら、そのプロジェクトが推奨するバージョンが あります。適当にソース持ってきて自分でソースなどを修正する時は、そのソー スを書いた人が使っているものと同じバージョンがないとうまく動かないこと もあります。更に、これらのツールは同じprefixにインストールしないとうま く動かない場合が多いです。 私は、$HOME以下のディレクトリにいろんなバージョンが入っているのですが、 libtoolだけはいい方法が見つからないです。
61 名前:>>53 mailto:sage [03/05/16 01:00.net] >>59 さんくす。内輪のプロジェクトなんでconfigure.acまでにしときます。 すでにautotoolsの互換性に悩んでるんだけど、最新版推奨で行くことにします。 configureはtarballに入れればいいし。
62 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/16 02:39.net] >>60 どうもです。 私はとくに他人のプロジェクトに参加したりということもなさそうですので、 最新のを入れて問題なさそうですね。
63 名前:名無しさん@お腹いっぱい。 [03/05/17 02:40.net] とあるソフトの configure.in、 AC_SEARCH_LIBS(tputs, ncurses termcap, HAVE_TERMCAPとdefine, ダメです) みたいなライブラリチェックしかなくてSolaris8上でのconfigureが不能です。 対症療法よりもその辺全面的に書き換えようと思うんで、 configure.in での termcap, curses, ncursesのチェックのお手本になるソフト探してます。 readlineをリンクすることも可能で、Solarisでconfigure;make 可能なソフト、 なんかないでしょうか?gdb?
64 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/17 11:11.net] >>63 GNU texinfoが、tercap、ncurses、readlineなどを使ってるみたいです。 infoコマンドのソースはgdbより少ないかな?
65 名前:63 mailto:sage [03/05/17 18:27.net] >>64 情報ありがとうございます。当たってみます。
66 名前:名無しさん@お腹いっぱい。 [03/05/19 21:08.net] 済みません、ちょとお邪魔させてください。 事情により初めてautoconf/automake使い始めたとこなんですが、 unyalib--------------------subDirA ソ ースいくつか | ソースいくつか | | |-----subDirB ソースいくつか という具合に、ライブラリソースのディレクトリ直下に、ソースが有り、 なおかつ、そのライブラリの一部になっているサブディレクトリにも ライブラリのソースが有り、という状況ですが、解説ページとかを参考に、
67 名前:名無しさん@お腹いっぱい。 [03/05/19 21:08.net] 解説ページとかを参考にして、 -- unyalibのMakefile.am ------ SUBDIRS = subDirA subDirB noinst_LIBRARIES = libunyalib.a libunyalib_a_SOURCES = unya.c honya.c -- subDirAのMakefile.am ---- noinst_LIBRARIES _ libunyalib.a libunyalib_a_SOURCES = libunyalib_a_LIBADD = unya_a.c honya_a.c -- subDirBもsubDirAと同じように"LIBADD"を使用 ---- とかいうように、書いてautomakeを動かしてみました。 でも、結果としてのMakefile.inは、どのディレクトリのものでも unyalib.a: $(unyalib_a_OBJECTS) $(unyalib_a_DEPENDENCIES) -rm -f unyalib.a $(AR) cru unyalib.a $(unyalib_a_OBJECTS) $(unyalib_a_LIBADD) $(RANLIB) unyalib.a と、ar の前に必ずrm が実行されて、一つのライブラリに合体してくれない状態です。 サブディレクトリの方ではrmの実行が挟まれず、一つのライブラリにさせる技は無いでしょうか。
68 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
69 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/19 21:50.net] そりゃサブディレクトリでやったらそれぞれ別物だし、 一つのライブラリになるわけはない罠。
70 名前:67 [03/05/19 22:48.net] えーと、やっぱ駄目ですか。 automakeって、一つの結果(実行形式でもライブラリでも)を作るためのソースは、 一つのディレクトリに集まっているというのしか想定していないということでしょうか。
71 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/20 20:14.net] SUBDIRS使わずに、SOURCESで相対パス指定でできなかったっけ? $(topsrcdir)とかで指定するんだったかも。 1.4頃の記憶なんで違うかもしれん。 どっちかというとlibtoolsの話かもしれんけどね。
72 名前:67 [03/05/21 21:31.net] やってみました。 SUBDIRS無し、 libunyalib_a_SOURCES = unya.c honya.c subDirA/unya_a.c subDirA/honya_a.c とかしてみると、 subDirA下のソースに対するオブジェクトがunyalib(ライブラリソースツリーの根っこ)下に 作成されるけど、ライブラリのためのオブジェクトはサブディレクトリから取ってこようとする Makefileが出来ちゃいまひた。 で、もう、最初のMakefile.inはautomakeで作るけど、 それを手で修正して以後automakeは使わないという決定が 本日なされちゃって、この件は棚上げとあいなりました。 ありがとうございました。
73 名前:名無しさん@お腹いっぱい。 [03/05/21 23:35.net] >>1 使いにくいのを奥深さと勘違いしてるだけだろ。
74 名前:>>53 mailto:sage [03/05/21 23:52.net] >>73 奥が深くて使いづらいと申し上げているのです。
75 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
76 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
77 名前:名無しさん@お腹いっぱい。 [03/05/23 15:15.net] makeができない。
78 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/25 02:38.net] automakeで作ったMakefileってgmakeに依存する?
79 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/25 20:45.net] >>78 基本的には依存しない。Makefile.amの内容によっては依存する。
80 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
81 名前:名無しさん@お腹いっぱい。 [03/05/30 15:01.net] >>73 バッドノウハウと「奥が深い症候群」か。 ttp://namazu.org/~satoru/misc/bad-knowhow.html こんな単純な問題じゃないと思うけどな。autotoolsがバッドノウハウの塊なのは認めるけど。でも、バッドノウハウがなくなることはないと思うよ、漏れは。
82 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
83 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
84 名前:81 mailto:sage [03/05/30 15:50.net] >>67 ん? -- unyalibのMakefile.am ------ SUBDIRS = subDirA subDirB noinst_LIBRARIES = libunyalib.a libunyalib_a_SOURCES = unya.c honya.c libunyalib_a_LIBADD = libsubdir_a.a ... -- subDirAのMakefile.am ---- noinst_LIBRARIES = libsubdir_a.a libsubdir_a_a_SOURCES = unya_a.c honya_a.c でいいんじゃないの? 手元で試してないから嘘言ってるかもしれないけど。
85 名前:81=84 mailto:sage [03/05/30 15:54.net] 間違えた。 libunyalib_a_LIBADD = libsubdir_a.a ... は libunyalib_a_LIBADD = subdirA/libsubdir_a.a ... ね。
86 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/05 21:26.net] auto* っつーもんは、backward compatibility を放棄した糞ということでよろしいか?
87 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/06 13:26.net] Autotools で生成したものの再配布は GNU ライセンスに準じるの?
88 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/06 21:30.net] >>87 準じないけど、Automakeで配布されるファイルには いろんなライセンスがあっはず。 バイナリ配るんなら問題無かったと思う。 >>86 糞かどうかは知らんが、同意したい気分だね。
89 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/06 22:25.net] まあ、こいつの登場で便利になっている事実は否定できないので、 backward compatibility を確保して欲しかったということだけかな。
90 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 03:42.net] backward compatibilityを維持したらどんな事態になるか分るだろ。
91 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 04:11.net] ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/< 先生!わかりません!! _ / / / \___________ \⊂ノ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
92 名前:あぼーん mailto:あぼーん [あぼーん.net] あぼーん
93 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/14 20:07.net] Automake-1.7.7のconfigureがAutoconf-2.57だと通らず、 Autoconf-2.54だと通る。 config.logは以下の通り(一部抜粋Autoconf-2.57のとき)。 configure:1724: cd conftest && eval autoconf -o /dev/null conftest.ac autom4te: no such file or directory: m4sugar/m4sugar.m4 configure:1727: $? = 1 configure:1731: error: Autoconf 2.54 or better is required. Is it installed? Is it in your PATH? (try running `autoconf --version') Is it working? See also config.log for error messages before this one. なんか情報ありませんか?
94 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/14 20:53.net] お騒がせしました。ありました。 mail.gnu.org/archive/html/automake/2003-07/msg00018.html 以下のスレッドでした。でもちょっと違うんだよね。困った。
95 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/20 19:40.net] 犬板にあったので japan.linux.com/desktop/03/11/20/0516251.shtml 個人的にはconfigure時にはbuildなどディレクトリを掘って ../configureのほうが好み。
96 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/22 09:20.net] >>95 distclean できる *はず* なので、正直どうでもいい。
97 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/22 18:24.net] 確かにdistcleanできる *はず* ですね。 個人で開発に利用するときは、cleanすら使うことが少ないから、 良く理解していなかった。
98 名前:名無しさん@お腹いっぱい。 [03/12/27 14:58.net] ./configureしたときのデフォルトの$prefixが/usr/localなのが不便なので、configure.ac やMakefile.acの中で--prefix=/usrの指定をできないでしょうか?
99 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 16:19.net] >>98 AC_PREFIX_DEFAULTを使う。詳細はinfo Autoconfとかして見るべし。 しかし、デフォルトのprefixを/usrにするのはあまり行儀の良いもの ではないと思うが。
100 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 16:47.net] Makefile.ac
101 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 17:02.net] >>100 ああ、Makefile.amの間違いだよな。
102 名前:名無しさん@お腹いっぱい。 [03/12/27 17:02.net] >>99 ありがとうございます。 ところでprefixを/usrにするとどういうデメリットがあるのでしょうか?
103 名前:名無しさん@お腹いっぱい。 [03/12/27 17:03.net] >>101 ごめんなさい。その通りMakefile.amの間違いです。
104 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 18:11.net] >>102 /usr の下はユーザにとって最低限必要なものが入ってるので、そういう重要なファイルと ユーザがインストールしたものの中で名前が衝突し、置き変えられたりするとまずい。 /usr/bin/cc が上書きされたらどうなるかは簡単に想像できるとおもう。 Linux とかはパッケージで入れるものは全部 /usr に入れるのが多い (衝突が検知できるから問題にならない)けど、 *BSD は別にディレクトリを掘って そこに入れてる。/usr の下は一切いじらないポリシーを厳格にまもってるんだとおもう。
105 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 19:12.net] OSの一部として配布されるもの以外は/usrに入れないのが当り前です。 システム上重要というだけでなく、そのOSを使っている人の間で構成が 一致しているからでもある。 Linuxはその意味ではいまだ寄せ集めの域を出ていないのかな? もしだとすると>>102 のようになんでも/usrに叩き込むということになっちゃっ うのも納得できる。 >>104 の前半にあるような問題は既にLinuxユーザでは起きているみたいだし。
106 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 19:44.net] 寄せ集めっつーか、大多数のLinuxディストリにはbase systemと いう概念が無いからなぁ。「無けりゃインストールしろ」「インストール したらそれもbase systemの一部だ」みたいなノリなんだろうね。
107 名前:ヽ(´ー`)ノ mailto:sage [03/12/27 20:30.net] >>105 Linux だと FHS(File Hierarcy Standard だっけな)って標準があるよ。 最近のメジャーなディストリは準拠してる(Debian,SuSE,Fedora,Turbo...)。 特別な理由もなく --prefix=/usr するのは、お行儀の悪い鯖管だけだね。 > Linuxはその意味ではいまだ寄せ集めの域を出ていないのかな? これは、もはや昔話だよもん。
108 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/07 17:28.net] 一度rpmにするものは/usrにしてる。
109 名前:名無しさん@お腹いっぱい。 [04/02/01 23:20.net] libtool.m4に入ってるチェックで、Fortranコンパイラを勝手に探したり、 maximum length of command line argumentsとか言ってCPU食うのを やめさせたいんですけど。そういうACマクロはないんでしょうか?
110 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 23:29.net] >>109 「勝手」にチェックする m4 なんてない。 configure.{ac,in} から呼び出してる(つまり必要である)から行われてるチェック。 気に入らなきゃチェックしてるところを外せ。 # それでまともにコンパイルできるとは思えんが。
111 名前:名無しさん@お腹いっぱい。 [04/02/01 23:36.net] えーと言い方が悪かったですが、AC_PROG_LIBTOOLマクロを使うと ほとんどのパッケージには不要なはずのチェックが盛りだくさんに はいるわけです。 とりあえず全部チェックしておけばどんな場合にも対応できるってこと なんでしょうが、不要なものをdisableにするくらいできてもいいよねえ、 そういうマクロあります?って話です。 libtool.m4が洗練されてないと言えばそれまでですがね。
112 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 23:53.net] 古いlibtool使うしかないのでは?
113 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/02 19:06.net] >>109 AC_LIBTOOL_SETUPのAC_LIBTOOL_SYS_MAX_CMD_LENをコメントアウトするとか、 自分でlibtool.m4を書き換えちゃえば? うまく動く保証は無いし、libtool使う意味も減ると思うけど。 移植性考えないんならlibtool使わなくてもいいんじゃないかな?
114 名前:名無しさん@お腹いっぱい。 [04/02/04 11:21.net] 移植性を考える考えないの二択ではないでしょう。全プラットフォームの 全項目を保証する気なんてないし、不可能ですから、どこまでチェック するかの問題ですね。AutoconfにしてもLibtoolにしても。 ですから「移植性考えないならlibtool使わなくていい」なんてのは極論です。 このチェックに関して言えば、ソースのビルド中にコマンドラインの 最大長を超えるコマンドは分割実行するようになっているみたいですが、 環境によっては数分以上かかるようなチェックをするより、4096とか 小さい値を決めうちしたほうがいいですね。実際そうしましたが。 コマンドに4096バイトも入らないプラットフォームは問題外ですから 無視でよいです。デフォルトがチェックになってるのは仕方ないですが。
115 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/04 12:01.net] 外してたら済まんが、ac_cvなんとかでスキップできんの?
116 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/04 14:03.net] たかだか AC_LIBTOOL_SYS_MAX_CMD_LEN のチェックぐらいで数分もかかる プラットホームは俺の中で問題外なんだけどなw 何のために libtool 使ってんのか分からんよ。
117 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/04 19:48.net] >>114 configure時の話なら、config.siteじゃできんかな? lt_cv_sys_max_cmd_lenがキャッシュにあれば良さそうなんで、 test "$lt_cv_sys_max_cmd_len" = NONE && lt_cv_sys_max_cmd_len=4096 みたいな内容を書いとけばいいかもね。 # 試してないんで違うかもしれん。 # 今、バージョンの不一致でautotoolsがうまく動かない(泣)
118 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/04 20:02.net] autoconfのドキュメント読んでたら、 $ ./configure --lt_cv_sys_max_cmd_len=4096 でいけるかもしれんような気がした。 しかし、試せない。。。
119 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/08 09:35.net] やっと試せた。 >>118 > $ ./configure --lt_cv_sys_max_cmd_len=4096 ではなく、 $ ./configure lt_cv_sys_max_cmd_len=4096 だね。
120 名前:名無しさん@お腹いっぱい。 [04/03/04 19:46.net] libtool関係の質問はOKですか?>このスレ
121 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/04 19:55.net] すぐ上でされてるみたいだけど、とりあえずやってみれば? 問題があれば誘導されるでしょ。
122 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/04 20:01.net] configureのコストが、高機能になればなるほどデカクなってきてる わけですが、これらを動的にチェックするんじゃなくて静的にデータ ベースのようなもので持たせることはできないですかね。とはいっても 何かソフトウェアをインストールしたら、そこで内部状態は変わってしまう わけでなかなか難しいんだろうけど。
123 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/04 20:07.net] >>122 そのためにはconfig.siteを使えばいいと思うんだけど。
124 名前:120 mailto:sage [04/03/04 21:15.net] >>121 では、御言葉に甘えて。 ちょっとした理由で、安定版のXFCE4が入ってるシステムにCVS版のXFCE4を別にインストールしようと思ってます。 #安定版:パッケージで入れてるので/usr以下 #CVS版:ソースからコンパイルで/opt/xfce4以下 まず、libxfce4utilをインストールしました。(これで、libxfce4util.soは/usr/libと/opt/xfce4/libに存在) 次にlibxfcegui4とlibxfce4mcsをコンパイルしたのですが、libxfcegui4では、リンクの際に /bin/sh ../libtool --mode=link gcc -g -O2 -o libxfcegui4.la -rpath /opt/xfce4/lib -export-dynamic -version-info 2:0:1 -export-symbols-regex "^[^_].*" -L/usr/X11R6/lib -L/usr/X11R6/lib libxfcegui4_la-dialogs.lo (略) libxfcegui4_la-gtkicontheme.lo -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lSM -lICE -lX11 -lSM -lICE -lX11 -L/opt/xfce4/lib -lxfce4util -lglib-2.0 によって、 gcc -shared .libs/libxfcegui4_la-dialogs.o (略) .libs/libxfcegui4_la-gtkicontheme.o -L/usr/lib -L/usr/X11R6/lib /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libgdk_pixbuf-2.0.so -lm /usr/lib/libpangoxft-1.0.so /usr/lib/libpangox-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so -ldl -lSM -lICE -lX11 -L/opt/xfce4/lib /usr/lib/libxfce4util.so /usr/lib/libglib-2.0.so -Wl,--export-dynamic -Wl,-soname -Wl,libxfcegui4.so.1 -Wl,-version-script -Wl,.libs/libxfcegui4.ver -o .libs/libxfcegui4.so.1.1.0 と、/usr/lib/libxfce4util.soがリンクされます (続く)
125 名前:120(続き) mailto:sage [04/03/04 21:16.net] 対してlibxfce4mcsでは、 /bin/sh ../libtool --mode=link gcc -g -O2 -o libxfce4mcs-manager.la -rpath /opt/xfce4/lib -export-dynamic -version-info 2:0:1 -export-symbols-regex "^[^_].*" -L/usr/X11R6/lib -L/usr/X11R6/lib libxfce4mcs_manager_la-mcs-channel.lo (略) libxfce4mcs_manager_la-mcs-manager.lo -lSM -lICE -lX11 -lSM -lICE -lX11 -L/opt/xfce4/lib -lxfce4util -lglib-2.0 によって gcc -shared .libs/libxfce4mcs_manager_la-mcs-channel.o (略) .libs/libxfce4mcs_manager_la-mcs-manager.o -Wl,--rpath -Wl,/opt/xfce4/lib -Wl,--rpath -Wl,/opt/xfce4/lib -L/usr/lib -L/usr/X11R6/lib -lSM -lICE -lX11 -L/opt/xfce4/lib /opt/xfce4/lib/libxfce4util.so /usr/lib/libglib-2.0.so -Wl,-soname -Wl,libxfce4mcs-manager.so.1 -Wl,-version-script -Wl,.libs/libxfce4mcs-manager.ver -o .libs/libxfce4mcs-manager.so.1.1.0 と、/opt/xfce4/lib/libxfce4util.soがリンクされます。 この2つは、何がちがってリンクされるlibxfce4util.soが変わるのかがわからないのですが、どこを調べれば いいのでしょうか?
126 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/04 22:03.net] pkg-configか?と脊髄反射してみる
127 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/04 22:09.net] >>125 二つのconfigure.acを見比べると、 www.lunar-linux.org/cgi-bin/viewcvs.cgi/*checkout*/xfce4/libxfcegui4/configure.ac?rev=1.45&cvsroot=Xfce&content-type=text/plain では dnl Check for required packages BM_DEPEND([GTK], [gtk+-2.0], [2.0.6]) BM_DEPEND([LIBXFCE4UTIL], [libxfce4util-1.0], [4.1.6]) になっていて、 www.lunar-linux.org/cgi-bin/viewcvs.cgi/*checkout*/xfce4/libxfce4mcs/configure.ac?rev=1.17.2.4&cvsroot=Xfce&content-type=text/plain では dnl Check for dependancies BM_DEPEND([LIBXFCE4UTIL], [libxfce4util-1.0], [4.0.0]) になっているので、違うものがリンクされる可能性はありますが、 それならguiのほうが新しい方を選択しそうですよね。 偉そうに書いておきながら、よく分からんです。 識者の降臨をお待ちします。
128 名前:120 mailto:sage [04/03/04 23:49.net] みなさん、すいません。 わからんわからんといいながら、解決してしまいました。 書き込みで両方のログをコピペしたときに、両方のlibtoolの部分の違いに気づいてしまいました。 「ん? -lhogeの前に-Wl,--export-dynamicがついてるな>libxfcegui4」 で、export-dynamicで調べてみると、 「動的リンクされた実行形式を作る時に, 全てのシンボルを動的シンボル表に追加する.」 とか書いてあって、よくわからなかったのですが、なんかリンクを動的にやろうとするから /usr/lib/libxfce4util.soの方を見てしまうのかな?と思ったので、-lxfce4util の前に export-dynamicがこないようにすればいいのかと思って-lxfce4utlがexport-dynamicの後に くるようにしたところ、libxfcegui4.soが/opt/xfce4/lib/libxfce4utl.soにリンクするようになりました。 #実際にやったのは、libxfce4gui4/Makefile.inでのリンカの呼出で、gtkのリンクオプションと #libxfce4utilのリンクオプションの順番を交換した #(-Wl.-export-dynamicは"pkg-config gtk+-2.0 --libs"に含まれているため) ということで、libtoolというより、なんかリンカの問題点だったような気もしてきた。 みなさん、お騒がせしました。
129 名前:神の愛の証言者 ◆IHSXPiND6Q mailto:sage [04/07/05 17:56.net] 4ヶ月立ってもスレがDAT逝きしないとは素敵なスレですね。 さて、automake で bison をいじろうとしています。 確かに Makefile.am に parser_SOURCES = parser.y lexer.l と書くと bison/flex がたちあがって parser.c / lexer.c を吐き出し、 さらにこいつらが実行可能形式にコンパイルされるわけですが、 make clean で parser.c / lexer.c が消えない。 おまけに AM_YFLAGS = -dで parser.y から parser.h を生成しても、 その依存関係が Makefile に記述されていません。 1. make clean, make dist とかで parser.c, lexer.c を消す方法 2. parser.h と parser.y の依存関係を Makefile に記述させる方法 を教えて下さい。
130 名前:神の愛の証言者 ◆IHSXPiND6Q mailto:sage [04/07/05 18:30.net] >>129 自己レス parser.c とか lexer.c を消したいなら make maintainer-clean を使うとよい。 ただし、なんで clean と maintainer-clean が別なのかその理由が分からない。 automake が吐き出す Makefile はちゃんと parser.y と parser.h の依存関係を 理解している。ただし、互換性維持のために parser.ht という新しいヘッダファイルを一旦生成し、 元からある parser.h と比較して、 内 容 が 本 当 に 違 っ て い た 場 合 に 限 り parser.h を上書きする。だから、単に parser.y のタイムスタンプを新しくしても parser.h は更新されない。
131 名前:名無しさん@お腹いっぱい。 [04/08/03 03:28.net] なんでこんなにたくさんバージョンがあるんだろう。 使いづらくてかなわん。
132 名前:保守 mailto:sage [04/08/08 14:36.net] >>131 ヴァージョンがたくさんあるのは、上の方で言われている通り、 後方互換性(backward compatibility)が維持できていないからですね。 使いにくいのは>>81 さんの通りかと;-)
133 名前:名無しさん@お腹いっぱい。 [04/08/15 18:24.net] 教えてください。以下のようなソースがあるとして、 ・main.cc #ifdef HAVE_DIRECTX #include "directx_test.h" #else #include "opengl_test.h" #endif ・directx_test.h directx_test.cc ・opengl_test.h opengl_test.cc ./configure --enable-openglした場合に 必要なソースだけ選択的にcompile, linkさせるって どのようにMakefile.amを書けば良いでしょうか? 状況に応じて依存関係が変化してくれると助かるのですが ・directx使用時 main_SOURCES = main.cc directx_test.h directx_test.cc ・opengl使用時 main_SOURCES = main.cc opengl_test.h opengl_test.cc ほかに、directx用とopengl用にdirectoryとMakefile.amを二つ用意するのも手だと思いますが、 top directoryで./configure, makeした場合、linuxでcompileできない directxに関係するソースを無視させるにはどうやったら良いでしょうか?
134 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/16 08:01.net] >>133 --enable-openglのときにHAVE_DIRECTXがundefされるんなら bin_PROGRAMS = hoge hoge_SOURCES = main.cc if HAVE_DIRECTX hoge_SOURCES += directx_test.h directx_test.cc else hoge_SOURCES += opengl_test.h opengl_test.cc endif でできんかな? info automakeのBuilding a programのConditional compilations あたり。
135 名前:133 mailto:sage [04/08/16 13:35.net] >>134 キモはAM_CONDITIONALとifの組み合わせだったのですね。 やりたいことが実現できてすっきりです。ありがとうございます。
136 名前:名無しさん@お腹いっぱい。 [04/10/08 13:12:44.net] あるプログラムは C、あるプログラムは シェルスクリプト、あるプログラムは Perl を使って書かれた パッケージを autoconf, automake でインスコさせたい時、 シェルスクリプトとか Perl に関する指示はどう出せばいいんですか?
137 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/08 13:26:04.net] Makefile.amに bin_SCRIPTS = fugafufu.pl とか?
138 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/06 17:50:44.net] 嘔吐makeなんか嫌いだ〜 手書きで書けYO!!
139 名前:名無しさん@お腹いっぱい。 [04/12/14 03:37:20.net] AC_CHECK_SIZEOF(wchar_t) の結果を Makefile(.am) 内で知りたいのだが、 何かうまい方法はないもんですかね・・・。 (wchar_t のサイズが Linux と Cygwin で違うから、コンパイルするファイルを 振り分けたい、というのが動機です)
140 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/14 04:11:52.net] まだあったのか、このスレ。 >>138 make組ハケーン >>139 AM_CONDITIONAL
141 名前:139 [04/12/15 00:03:31.net] >>140 レスどうもでつ。 結局 AC_CANONICAL_HOST で逃げることにしますた。