TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
2ちゃん画像落としまくりスクリプト
【BAKA】バッドノウハウについて語るスレ 3
最強のWindow ManagerのWindow Makerを語れ。
犬厨とBSD厨とソラ厨が仲直りするスレッド
今Monterey Marriotに居るよ
biff って良いよね
■Solaris9 ってどうよ?■
Solarisプログラミング教えてチョンマゲ
【熱く】お前のEmacsにはまった理由【語れ】
未だに10Base

Autoconf,Automakeについて


1 :02/04/11 〜 最終レス :2020/03/22
奥深さの前に使い方がさっぱり分からん。教えて下さい。
関連サイトは>>2

2 :
GNU Autoconf, Automake and Libtool
http://sources.redhat.com/autobook/
autoconf and automake入門(チュートリアル形式)
http://www.ainet.or.jp/~inoue/gnu/autoconf.html
AUTOCONF, AUTOMAKE を使ってみよう!
http://www.a2zsd.co.jp/~a2zsd217/book/autoconf/book1.html
autoconfとは?(概要図あり)
http://www.i.kyushu-u.ac.jp/~s-mita/autoconf.htm

3 :
もの凄い勢いで終了したスレはここですか?

4 :
http://www.ainet.or.jp/~inoue/gnu/whatis.html
> なぜ使うのか
> もちろん、表の理由は、移植性の高いソフトウェアを作ることにありますが、
> 裏の理由として、GNUへの忠誠を示すことができる点があります。
……(´д`;)

5 :
本当に終了してる(^_^;)マァヴサゲ

6 :
configureスクリプトよく見たらsockaddr.sa_lenがあるかどうかとか
チェックしてくれているのね。少し驚いたので、あげ。

7 :
>4
RMSの言う自由ってさ、ブッシュの言うそれと似てる気がする。
ま、彼も所詮「アメリカ」人ってことだーね。

8 :

           ウゼえ消えろ
      ∧_∧          _ _     .'  , .. .∧_∧
     ( ´_ゝ`)   _ .- ― .= ̄  ̄`:, .∴ '     ( >>1 )
    /     '' ̄      __――=', ・,‘ r⌒> _/ /
   / /\   / ̄\-―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒i
 _| ̄ ̄ \ /  ヽ \_              |  /  ノ |
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)              , ー'  /´ヾ_ノ
  ||\            \          / ,  ノ
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄          / / /
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||          / / ,'
  ||  ||           ||       /  /|  |
                       !、_/ /   〉
         ∧_∧   R
        _( ´_ゝ`)
      /      )           _     _
     / ,イ 、  ノ/    ∧ ∧―= ̄ `ヽ, _
    / / |   ( 〈 ∵. ・(   〈__ >  ゛ 、_―
   | !  ヽ  ー=- ̄ ̄=_、  (/ , ´ノ
   | |   `iー__=―_ ;, / / /   ←>>1
    !、リ  -=_二__ ̄_=;, / / ,'
        /  /       /  /|  |
       /  /       !、_/ /   〉
     / _/             |_/
     ヽ、_ヽ

   正   直   逝   っ   て   >>1  は   ア   ホ

                          _,-''  )  。゚・   。 。
         ∧ ∧            , -' (.__,-''   ,   , , 。゜
       , - ´_ゝ`)_         .,-'~ ,- '    /  /  i〜i /, 。
      /   )ヽ(w i      .,-'~  ,-'~    // , /// 〜 //,
     .,/  /   ヽヽヽ   ,-/'~  ,ノ      / ////@ @// '/
     / ^)'死  _ l ゝ _)-'~   ,-'~     //, ' ⌒/∨ ̄∨ ⌒ヽ
    / /'  ヽ    ^ ̄   ,-'~       / /     >>1  ヽ ゚ ・
   (iiiiリ∫ ヽ      ./    (⌒`〜〜'  /i  ノ 愛  ノ\ ヽ
       ヽ─|〜' ノ/      ゙〜〜〜〜  |      ./  `- '
        || ||l、_  /          ,,,     |     /  ゚ 。
  |.|  _|.|_,,,|   |        __-'',,-~   /    /
  .|.| ニ─、─''''|   |       =-'''     /   、 ヽ
  .|.|    |.|  .|  |              |    l  l
  |.|    |.|  .|  '、      _     _.|   /  ノ
  .|.|  ,,== ==.|   l      .|.|  ,_,,-'',,,-|  / |  /
   |.| ||_ノノ   |  |      i、`''',,-''''  |  /  .| .|
   .|.レ `-- '    |  |        ̄   | .ノ   | )
         ,- |  |     .....     | .|    ||
         `ヽ   );;;::::::::'''''      | |     | .|
           ゙ - '''''''       ,- 、| | ,,,,,;;;;;;;;と__)''
                      \__);;;;;;;''''''


9 :
特定のライブラリがユーザによってインストールされているかを
autoconf で調べるのって邪道だと思わない?

10 :
>>9 ライブラリ作者に.m4ファイルを書けってこと?
そこまでFSFに魂を売り渡したくない人達はどうするよ。
たとえば、X関係とか。


11 :
Imake最強

12 :
おめーらんなこというならgcc使うなよ

13 :
>>12
(゚Д゚)ハァ?

14 :
なんかこの板最近殺伐としてきたな。喜ぶべきことかどうなんだろうか・・・

15 :
>11
いつのまにcross buildの機能が付いたね。FreeBSD的には有難い。
しかし、そんなこと知らずに偽cpp作ってゴリゴリhost.defとか書た
苦労はいったい・・・

16 :
autoconf、automakeのスレ、荒れてる。
もったいないよ、盛り上げようよ。

17 :
何もわかってない馬鹿が暴れてるんだろうな >>8 >>12

18 :
configure.inを書かずにGPLで配布することは恥かしいことなんですか?(w

19 :
>>18 configure.in
configure.acを利用しない方が恥ずかしい罠。

20 :
どーでもいいけど板違いな気がするんですが

21 :
>>10
autoconf は OS 間の非互換性を補う使い方に留めてほしい。
自分がリンクしたいライブラリが無かった時、勝手に WITHOUT_LIBHOGE
みたいなオプションを付けてそれ抜きでコンパイルするのは嬉しくない。
そのライブラリを使うか使わないかはユーザが決める事柄なんだから、
--with-libhoge とも --withoug-libhoge とも指定してないのに、勝手に
WITHOUT_HOGE とかして欲しくない。
黙ってコンパイルして、黙ってリンカエラーを出してくれればそれでいい。
事前に親切に「libhoge ねえぞ、入れろやゴルァ」と言ってくれれば便利だが、
そこまでは求めない。

あと、OS 標準じゃない物を探すんだったら /usr/lib と /usr/include
以外の場所も適宜探してくれないと不便だと思う。何でも /usr 直下に
突っ込むことを暗黙の前提としているのではないか。

22 :
了解。勘違いしていた。
>>21
> 自分がリンクしたいライブラリが無かった時、勝手に WITHOUT_LIBHOGE
> みたいなオプションを付けてそれ抜きでコンパイルするのは嬉しくない。
これは同感です。
# というより、Autoconfの使い方が悪い。
> 黙ってコンパイルして、黙ってリンカエラーを出してくれればそれでいい。
これやっちゃうと、バグの報告が大量に発生すると思うので、マトモなパッ
ケージなら、
> 事前に親切に「libhoge ねえぞ、入れろやゴルァ」
と言ってくれると思うんですがどうでしょう。
# マトモの定義の話は無しね。
多分、Makefileを適切に書くのが面倒だから「Automake Autoconfでパッケー
ジ作りました」ってのが多いんだと思う。AC_CHECK_XXXの引数できちんとエラー
処理すれば大丈夫でしょ。
> あと、OS 標準じゃない物を探すんだったら /usr/lib と /usr/include
> 以外の場所も適宜探してくれないと不便だと思う。
ライブラリについてはリンクを実際に行なって調査するので、ユーザが環境変
数を設定することで何とかなりますし、ヘッダの方もコンパイル可能かどうか
を調査するので同じことではないでしょうか?
ま、言いたいのは、道具はいいけど使い方は人それぞれってことです。

23 :
age

24 :
関係ないんだけど、いいですか?
UNIXの人はWindowsでプログラミングするときは
nmakeとcygwin(gmake)のどっち使ってますか?
nmake使いづらいです。。

25 :
>>24
nmakeってことはVC++?
だったらmsdev使うけど。

26 :
>>25
vs持ってないもんで、、

27 :
>26
バカヤロウ。ここはUNIX板。
Windowsはcygwinを入れて使うもんだろ。
コンパイラまでgnuを使うわけにはいかないことも
あるが、それ以外は当然全てgnu!

28 :
Automake 1.6.2 released
sageですが ;-)

29 :
JavaプログラムをAutoconf/Automakeに対応させるにはどうしたらいいのかな?
最低限 make と make install と make dist を使えるようにしたいのだけど。
で、
--- Makefile.am ---
bin_PROGRAMS = hello.jar
hello_jar_SOURCES = Main.java
-- configure.in --
AC_INIT(Main.java)
AM_INIT_AUTOMAKE(hello, 1.0.0)
AC_ARG_PROGRAM
AC_PROG_INSTALL
AC_PROG_CC
AC_OUTPUT(Makefile)
とかやってみたけど当前のように正しいMakefileは出来ないし。

30 :
>>29
> JavaプログラムをAutoconf/Automakeに対応させるにはどうしたらいいのかな?
> 最低限 make と make install と make dist を使えるようにしたいのだけど。
Automake-1.6.2とAutoconf-2.53だと、gcjを利用したコンパイルができるみたい。
でも、うちはJAVAの環境が無いから試せないです。
automakeのinfoの、ノード"Java Support"を参照してみてください。

31 :
>>30
gcjを入れてみたけどlibgcj.specが????とか出て動かない。かなり険しそう(w
とりあえずAutomake-1.4のinfoで'_JAVA'がどうのこうのって記述を見つけたので、
javacで動くように試してみます。

32 :
>>31
> とりあえずAutomake-1.4のinfoで'_JAVA'がどうのこうのって記述を見つけたので、
> javacで動くように試してみます。
1.4のやつって、javacでのコンパイルのみのサポートだったと思います。
# 記憶が曖昧ですみません。
info にもありますけど、.javaと.classのサフィックスルールを自動的に作れ
ない(ファイルの中からクラス名を調査する必要がある)のでそのような仕様だっ
たと思います。だからmakeはできてもmake installは難しいと思います。
# でもうまくいったら教えてください。

33 :
Autoconf-2.53b 開発版リリース(結構前だけど)
どーでもいいけど、autoconf-mode.elとかautotest-mode.elとかあるのね。
色が変わるだけみたいだけど。

34 :
知らない間にac-2.54 am-1.7になってたのね。
amのdrilistって便利そうなんだけど使っている人いる?
--confiugre=$HOMEしている人ぐらいなのかな。
# ム板のmmmpスレのほうが活発かな?

35 :


36 :
保守

37 :
(^^)

38 :
autoconfは便利なんだけど、これに対応するようになってから
ソースの見通しが悪くなった。

39 :
前は環境依存部分を別関数にしたりしてたけど、最近は面倒だからやめた。
確かに見通しは悪くなった。GNUのソースも見るのが辛くなってきた。
# なんか愚痴ばっかりだな。

40 :
この前からCommon Lispで書かれた数式処理ソフトウェアの構成を
追ってみようとしてるんだけど、main関数のないLispソースを
autotoolsでビルドする構成になってるので、さっぱり分からない。
Autotoolsを使うときには、想定しているコンパイラ・ライブラリの組み合わせと
依存関係を簡単にドキュメント化してくれないと困ってしまう。
逆に移植などがし辛くなってしまうよ。

41 :
>>40
とりあえずconfigureしてlog見るんじゃだめなの?
Common Lisp知らないからいい加減なこといっているけど。

42 :
コンパイル型言語じゃないからね、Lispの「メモリダンプ」とかって独特なんです。
で、どんなコマンドが実行されてるんだか
(というか、山ほど実行されてるコマンドのうちどれが重要なのか)分からない。

43 :
いろいろ大変なんですね。LispはEmacsのしか知らないし、
AM_PATH_LISPDIR使っているものしか見たこと無いんで、
役に立たずですまんです。
# autoconfにもLispファイルがあります。

44 :
Autoconf,Automake,Libtoolを解説してる本って少ないながらも一応あるようですけど,
どんなもんでしょう?いい本なのでしょうか?

45 :
多分あの本だと思いますがいい本です。ただし、最新のAutoconf、Automakeを
利用するとちょっと戸惑うかもしれません。セレンディップのGNOMEプログラ
ミングという本にもこれらの解説があります。

46 :
オーム社の本の事ですか?

47 :
>>46 そうだと思う。
んでも、少々高いから、漏れは立ち読みで逝こうかとw

48 :
やっぱりm4マクロの勉強からかな

49 :
>>48
勉強ってほどのもんでもない。

50 :
2割、3割はあたりまえ。

51 :
(^^)

53 :
CVSにconfigureまで突っ込んでるプロジェクトもたまに
ありますが、ふつうはどこまで含めるものなんですか。

54 :
FreeBSD PORTS なんかだと、
autoconf{,213,254,257} や automake{,14,16,17} や libtool{,13,14} のように、
古いバージョンも後生大事に用意されていますよね。
これは何故なんでしょうか?
何か後方互換性に大きな問題でもあるのでしょうか?

55 :
はい。

56 :
>>55
なるほど。
そうだとして、この場合はそれぞれこのバージョンを使えば良い/いけない、
といった判断は一般にどのような基準に基づいて行えば良いのでしょうか?

57 :
>56
違うバージョンを使うと動かないので悩む必要はありません。

58 :
>>57
う〜ん、やっぱり良くわからないです。
とどのつまり、知りたいのは、
PORTS や package のような仕組みの無い OS に automake や autoconf を入れる場合、
とりあえずそれぞれ最新のバージョンのを入れておけば問題ないものなんでしょうか?
それとも、古いバージョンのも入れておいた方が良いのでしょうか?

59 :
>>53
configure.acまでと言いたいが、今のAutotoolsのバージョン間の互換性から、
configureまで入れておいたほうが無難。誰でもcheckoutできるプロジェクト
なら、「autoconfを実行するとエラーが出ます」というレポートが大量発生す
る可能性が高い。しかし、confugure.acやMakefile.amを書き換えると同じ状
況になるんだよね。
AM_INIT_AUTOMAKE([1.7])とかAC_PREREQ(2.57)とか書けばいいのかな?

60 :
>>58
Autotoolsを自分のプロジェクトで使うのなら、最新を入れて問題ないです。
他のプロジェクトに参加するなら、そのプロジェクトが推奨するバージョンが
あります。適当にソース持ってきて自分でソースなどを修正する時は、そのソー
スを書いた人が使っているものと同じバージョンがないとうまく動かないこと
もあります。更に、これらのツールは同じprefixにインストールしないとうま
く動かない場合が多いです。
私は、$HOME以下のディレクトリにいろんなバージョンが入っているのですが、
libtoolだけはいい方法が見つからないです。

61 :
>>59
さんくす。内輪のプロジェクトなんでconfigure.acまでにしときます。
すでにautotoolsの互換性に悩んでるんだけど、最新版推奨で行くことにします。
configureはtarballに入れればいいし。

62 :
>>60
どうもです。
私はとくに他人のプロジェクトに参加したりということもなさそうですので、
最新のを入れて問題なさそうですね。

63 :
とあるソフトの configure.in、
AC_SEARCH_LIBS(tputs, ncurses termcap, HAVE_TERMCAPとdefine, ダメです)
みたいなライブラリチェックしかなくてSolaris8上でのconfigureが不能です。
対症療法よりもその辺全面的に書き換えようと思うんで、
configure.in での termcap, curses, ncursesのチェックのお手本になるソフト探してます。
readlineをリンクすることも可能で、Solarisでconfigure;make 可能なソフト、
なんかないでしょうか?gdb?

64 :
>>63
GNU texinfoが、tercap、ncurses、readlineなどを使ってるみたいです。
infoコマンドのソースはgdbより少ないかな?

65 :
>>64 情報ありがとうございます。当たってみます。

66 :
済みません、ちょとお邪魔させてください。
事情により初めてautoconf/automake使い始めたとこなんですが、
unyalib--------------------subDirA
  ソ ースいくつか   |       ソースいくつか
               |
               |
               |-----subDirB
                      ソースいくつか
という具合に、ライブラリソースのディレクトリ直下に、ソースが有り、
なおかつ、そのライブラリの一部になっているサブディレクトリにも
ライブラリのソースが有り、という状況ですが、解説ページとかを参考に、


67 :
解説ページとかを参考にして、
-- 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の実行が挟まれず、一つのライブラリにさせる技は無いでしょうか。

69 :
そりゃサブディレクトリでやったらそれぞれ別物だし、
一つのライブラリになるわけはない罠。

70 :
えーと、やっぱ駄目ですか。
automakeって、一つの結果(実行形式でもライブラリでも)を作るためのソースは、
一つのディレクトリに集まっているというのしか想定していないということでしょうか。

71 :
SUBDIRS使わずに、SOURCESで相対パス指定でできなかったっけ?
$(topsrcdir)とかで指定するんだったかも。
1.4頃の記憶なんで違うかもしれん。
どっちかというとlibtoolsの話かもしれんけどね。

72 :
やってみました。
SUBDIRS無し、
libunyalib_a_SOURCES = unya.c honya.c subDirA/unya_a.c subDirA/honya_a.c
とかしてみると、
subDirA下のソースに対するオブジェクトがunyalib(ライブラリソースツリーの根っこ)下に
作成されるけど、ライブラリのためのオブジェクトはサブディレクトリから取ってこようとする
Makefileが出来ちゃいまひた。
で、もう、最初のMakefile.inはautomakeで作るけど、
それを手で修正して以後automakeは使わないという決定が
本日なされちゃって、この件は棚上げとあいなりました。
ありがとうございました。

73 :
>>1
使いにくいのを奥深さと勘違いしてるだけだろ。

74 :
>>73
奥が深くて使いづらいと申し上げているのです。

77 :
makeができない。

78 :
automakeで作ったMakefileってgmakeに依存する?

79 :
>>78
基本的には依存しない。Makefile.amの内容によっては依存する。

81 :
>>73
バッドノウハウと「奥が深い症候群」か。
ttp://namazu.org/~satoru/misc/bad-knowhow.html
こんな単純な問題じゃないと思うけどな。autotoolsがバッドノウハウの塊なのは認めるけど。でも、バッドノウハウがなくなることはないと思うよ、漏れは。

84 :
>>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 :
間違えた。
libunyalib_a_LIBADD = libsubdir_a.a ...

libunyalib_a_LIBADD = subdirA/libsubdir_a.a ...
ね。

86 :
auto* っつーもんは、backward compatibility を放棄した糞ということでよろしいか?

87 :
Autotools で生成したものの再配布は GNU ライセンスに準じるの?

88 :
>>87
準じないけど、Automakeで配布されるファイルには
いろんなライセンスがあっはず。
バイナリ配るんなら問題無かったと思う。
>>86
糞かどうかは知らんが、同意したい気分だね。

89 :
まあ、こいつの登場で便利になっている事実は否定できないので、
backward compatibility を確保して欲しかったということだけかな。

90 :
backward compatibilityを維持したらどんな事態になるか分るだろ。

91 :
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 先生!わかりません!!
 _ / /   /   \___________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||

93 :
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 :
お騒がせしました。ありました。
http://mail.gnu.org/archive/html/automake/2003-07/msg00018.html
以下のスレッドでした。でもちょっと違うんだよね。困った。

95 :
犬板にあったので
http://japan.linux.com/desktop/03/11/20/0516251.shtml
個人的にはconfigure時にはbuildなどディレクトリを掘って
../configureのほうが好み。

96 :
>>95
distclean できる *はず* なので、正直どうでもいい。

97 :
確かにdistcleanできる *はず* ですね。
個人で開発に利用するときは、cleanすら使うことが少ないから、
良く理解していなかった。

98 :
./configureしたときのデフォルトの$prefixが/usr/localなのが不便なので、configure.ac
やMakefile.acの中で--prefix=/usrの指定をできないでしょうか?

99 :
>>98
AC_PREFIX_DEFAULTを使う。詳細はinfo Autoconfとかして見るべし。
しかし、デフォルトのprefixを/usrにするのはあまり行儀の良いもの
ではないと思うが。

100 :
Makefile.ac

101 :
>>100
ああ、Makefile.amの間違いだよな。

102 :
>>99
ありがとうございます。
ところでprefixを/usrにするとどういうデメリットがあるのでしょうか?

103 :
>>101
ごめんなさい。その通りMakefile.amの間違いです。

104 :
>>102
/usr の下はユーザにとって最低限必要なものが入ってるので、そういう重要なファイルと
ユーザがインストールしたものの中で名前が衝突し、置き変えられたりするとまずい。
/usr/bin/cc が上書きされたらどうなるかは簡単に想像できるとおもう。
Linux とかはパッケージで入れるものは全部 /usr に入れるのが多い
(衝突が検知できるから問題にならない)けど、 *BSD は別にディレクトリを掘って
そこに入れてる。/usr の下は一切いじらないポリシーを厳格にまもってるんだとおもう。

105 :
OSの一部として配布されるもの以外は/usrに入れないのが当り前です。
システム上重要というだけでなく、そのOSを使っている人の間で構成が
一致しているからでもある。
Linuxはその意味ではいまだ寄せ集めの域を出ていないのかな?
もしだとすると>>102のようになんでも/usrに叩き込むということになっちゃっ
うのも納得できる。
>>104の前半にあるような問題は既にLinuxユーザでは起きているみたいだし。

106 :
寄せ集めっつーか、大多数のLinuxディストリにはbase systemと
いう概念が無いからなぁ。「無けりゃインストールしろ」「インストール
したらそれもbase systemの一部だ」みたいなノリなんだろうね。

107 :
>>105
Linux だと FHS(File Hierarcy Standard だっけな)って標準があるよ。
最近のメジャーなディストリは準拠してる(Debian,SuSE,Fedora,Turbo...)。
特別な理由もなく --prefix=/usr するのは、お行儀の悪い鯖管だけだね。
> Linuxはその意味ではいまだ寄せ集めの域を出ていないのかな?
これは、もはや昔話だよもん。

108 :
一度rpmにするものは/usrにしてる。

109 :
libtool.m4に入ってるチェックで、Fortranコンパイラを勝手に探したり、
maximum length of command line argumentsとか言ってCPU食うのを
やめさせたいんですけど。そういうACマクロはないんでしょうか?

110 :
>>109
「勝手」にチェックする m4 なんてない。
configure.{ac,in} から呼び出してる(つまり必要である)から行われてるチェック。
気に入らなきゃチェックしてるところを外せ。
# それでまともにコンパイルできるとは思えんが。

111 :
えーと言い方が悪かったですが、AC_PROG_LIBTOOLマクロを使うと
ほとんどのパッケージには不要なはずのチェックが盛りだくさんに
はいるわけです。
とりあえず全部チェックしておけばどんな場合にも対応できるってこと
なんでしょうが、不要なものをdisableにするくらいできてもいいよねえ、
そういうマクロあります?って話です。
libtool.m4が洗練されてないと言えばそれまでですがね。

112 :
古いlibtool使うしかないのでは?

113 :
>>109
AC_LIBTOOL_SETUPのAC_LIBTOOL_SYS_MAX_CMD_LENをコメントアウトするとか、
自分でlibtool.m4を書き換えちゃえば?
うまく動く保証は無いし、libtool使う意味も減ると思うけど。
移植性考えないんならlibtool使わなくてもいいんじゃないかな?

114 :
移植性を考える考えないの二択ではないでしょう。全プラットフォームの
全項目を保証する気なんてないし、不可能ですから、どこまでチェック
するかの問題ですね。AutoconfにしてもLibtoolにしても。
ですから「移植性考えないならlibtool使わなくていい」なんてのは極論です。
このチェックに関して言えば、ソースのビルド中にコマンドラインの
最大長を超えるコマンドは分割実行するようになっているみたいですが、
環境によっては数分以上かかるようなチェックをするより、4096とか
小さい値を決めうちしたほうがいいですね。実際そうしましたが。
コマンドに4096バイトも入らないプラットフォームは問題外ですから
無視でよいです。デフォルトがチェックになってるのは仕方ないですが。

115 :
外してたら済まんが、ac_cvなんとかでスキップできんの?

116 :
たかだか AC_LIBTOOL_SYS_MAX_CMD_LEN のチェックぐらいで数分もかかる
プラットホームは俺の中で問題外なんだけどなw
何のために libtool 使ってんのか分からんよ。

117 :
>>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 :
autoconfのドキュメント読んでたら、
$ ./configure --lt_cv_sys_max_cmd_len=4096
でいけるかもしれんような気がした。
しかし、試せない。。。

119 :
やっと試せた。
>>118
> $ ./configure --lt_cv_sys_max_cmd_len=4096
ではなく、
$ ./configure lt_cv_sys_max_cmd_len=4096
だね。

120 :
libtool関係の質問はOKですか?>このスレ

121 :
すぐ上でされてるみたいだけど、とりあえずやってみれば?
問題があれば誘導されるでしょ。

122 :
configureのコストが、高機能になればなるほどデカクなってきてる
わけですが、これらを動的にチェックするんじゃなくて静的にデータ
ベースのようなもので持たせることはできないですかね。とはいっても
何かソフトウェアをインストールしたら、そこで内部状態は変わってしまう
わけでなかなか難しいんだろうけど。

123 :
>>122
そのためにはconfig.siteを使えばいいと思うんだけど。

124 :
>>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 :
対して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 :
pkg-configか?と脊髄反射してみる

127 :
>>125
二つのconfigure.acを見比べると、
http://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])
になっていて、
http://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 :
みなさん、すいません。
わからんわからんといいながら、解決してしまいました。
書き込みで両方のログをコピペしたときに、両方の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 :
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 :
>>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 :
なんでこんなにたくさんバージョンがあるんだろう。
使いづらくてかなわん。

132 :
>>131
ヴァージョンがたくさんあるのは、上の方で言われている通り、
後方互換性(backward compatibility)が維持できていないからですね。
使いにくいのは>>81さんの通りかと;-)

133 :
教えてください。以下のようなソースがあるとして、
・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 :
>>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 :
>>134
キモはAM_CONDITIONALとifの組み合わせだったのですね。
やりたいことが実現できてすっきりです。ありがとうございます。

136 :
あるプログラムは C、あるプログラムは シェルスクリプト、あるプログラムは Perl を使って書かれた
パッケージを autoconf, automake でインスコさせたい時、
シェルスクリプトとか Perl に関する指示はどう出せばいいんですか?

137 :
Makefile.amに
bin_SCRIPTS = fugafufu.pl
とか?

138 :
嘔吐makeなんか嫌いだ〜
手書きで書けYO!!

139 :
AC_CHECK_SIZEOF(wchar_t) の結果を Makefile(.am) 内で知りたいのだが、
何かうまい方法はないもんですかね・・・。
(wchar_t のサイズが Linux と Cygwin で違うから、コンパイルするファイルを
振り分けたい、というのが動機です)

140 :
まだあったのか、このスレ。
>>138
make組ハケーン
>>139
AM_CONDITIONAL

141 :
>>140
レスどうもでつ。
結局 AC_CANONICAL_HOST で逃げることにしますた。

142 :


143 :
-lhogeでstatic-linkさせる方法を教えて下さい。

144 :
>>143
自作のライブラリなら,
hoge_LDFLAGS = -static
をMakefile.amに追加するのかな?
make時なら,./configure --helpして
それなりのオプションがあれば可能だと思う.

145 :
ありがとうございました

146 :
共有ライブラリのバージョンが違っても動くプログラムを作る方法を教えて下さい

147 :
libtoolで困ってます。libtool 1.5->1.5.8でなにか大きな変更があったんでしょうか?
(FreeBSDスレで質問したのですが、だれも答えてくれなかったのでこちらへ来ました。
FreeBSD特有の問題でもなさそうですし…)
(1) FreeBSD-5.2.1, autoconf-2.57, automake-1.7.5_1, libtool-1.5
で開発をしていたのですが、FreeBSD-5.3に移行しようと思い、
(2) FreeBSD-5.3, autoconf-2.57, automake-1.7.5_1, libtool-1.5.8
で環境を整え開発中のソースをビルドしたのですが、 libtoolが作ってくれるはずの共有ライブラリがビルドされません。
#libtoolのバージョンのみ変わった。
> cp /usr/local/share/aclocal/libtool15.m4 acinclude.m4
> libtoolize15 --force --copy
> aclocal
> autoheader
> automake -a -c --gnu --add-missing --force-missing
んで、
> ./configure
> make
これで環境(1)では共有ライブラリができるのですが、環境(2)ではできなくなってしまいました。
(1)と(2)ではlibtoolizeがコピーするファイルが主に違っているので、libtoolizeが原因かと思い、
環境(2)でソースから libtool-1.5 をインストールしてやると共有ライブラリはビルドできました。
libtool-1.5.16もソースからインストールして同様にビルドすると、今度は共有ライブラリはできませんでした。
configure.ac 内では、AC_PROG_LIBTOOL を指定
Makefile.am では、
lib_LTLIBRARIES = libhoge.la
としています。
libtool-1.5 から libtool-1.5.8 の間にautoconf等の指定の仕方が変わったのでしょうか?
#なにか指定し忘れてるのだろうか,,,

148 :
>>147
libtoolのインストール先は他のautoconfやautomakeと同じprefixでしょうか?
確か最近のAutotoolsは同じprefixにしないと問題があるとMLに流れていたと思います。
# ググってもCygwin関係の話しか出てこない (^^;
確認してみてください。
また、(2)の最初の環境ではそのような問題は無いと思うので、
一度、buildディレクトリをクリーンにして試してみてください。
make maintainer-clean だったっけ?
その後で、autoreconf -f -i -Wall
してみてください。
autoconfとautomakeのバージョンによっては、
autoreconfがうまく動作しないかもしれないので、
そのときはちょっと困ります。
config.logあたりに何故できないかの情報があるかもしれないので、
ながめてみてください。

149 :
>>148
ご丁寧にありがとうございます。
> libtoolのインストール先は他のautoconfやautomakeと同じprefixでしょうか?
これは同じです。すべて prefix は /usr/local としています。
> 一度、buildディレクトリをクリーンにして試してみてください。
> make maintainer-clean だったっけ?
> その後で、autoreconf -f -i -Wall
> してみてください。
これもやってみたのですが、状況は変わりませんでした。
ちなみに autoreconf をすると以下の Warning が出ました。
> autoreconf -f -i -Wall
configure.ac:34: warning: The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.
    :
これらのWarningは configure.ac の AC_PROG_LIBTOOL でインクルード?される
libtool15.m4 (acinclude.m4 としてconfigure.ac と同じディレクトリにおいてある。) で出ている模様。
でも、Warning だけなのでいけそうな気もするんですが…。
> config.logあたりに何故できないかの情報があるかもしれないので、
> ながめてみてください。
これもみてみたのですが、shared lib 関連はとくに問題なさそうでした。
とりあえず、libtool-1.5 を使っていようと思います。ありがとうございました。

150 :
>>149
あまりお役に立てなかったようで、、、
後は、ソースからビルドされたようなので、
libtoolのmakeに失敗している可能性もあるので、
libtoolをmakeしたディレクトリでmake checkして、
問題が無いか確認するぐらいかな?

151 :
↓の書き込みも漏れだったりするけど、多分これだと思う。
540 名前:名無しさん@お腹いっぱい。:05/02/05 01:29:46
>539
そもそも X 自体入れてないんでどうなんか知らんが。
作らないんじゃなくて、作るけどわざわざ入れないようだ。
devel/libtool15 にわざわざ .la をインストールしないようパッチがされてる。
参考: ttp://www.freebsd.org/cgi/query-pr.cgi?pr=76363
とりあえず x11/libxfce4/Makefile で
-USE_LIBTOOL_VER=15
+USE_INC_LIBTOOL_VER=15
してやれば .la も入るみたいだけど?


152 :
>151
あー、ごめん早とちりしたかも。

153 :
http://www-src.lip6.fr/homepages/Alexandre.Duret-Lutz/dl/autotools.pdf
英語だけどわかりやすい

154 :
autopoint で i18n 化した場合って、GPL 互換のライセンスにしないと駄目なの?
intl/ の下に出来るファイルは全部 GPL だよね?
ソフトウェア本体のライセンスは Apache License 2.0 にしたいんだけども。

155 :
>>154
info gettextのDiscussionsの
* Dependencies over the GPL or LGPL
に[The simplest answer is "normally not".]と書かれている。
一応、読んでみてね。

156 :
>>155
thx。でも英語が分からん…_| ̄|○
一応読んでみたんだけど、intl/ を含めなければ GPL/LGPL 以外でも
配布できるという解釈で OK?

157 :
>>156
日本語訳
http://ring.atr.jp/archives/doc/gnu-info-j/gettext/gettext-ja.html#SEC59
やっぱりよくわからんけど、そんな感じだと思うけどね。

158 :
よくわからんが、intlの下ってlibintlに入るものと同じなんでしょ?
削ってしまってlibintlを動的リンクすれば何でもいいんじゃないの?

159 :
こんにちは。
以下のようなツリーで programA を静的にビルドすると、
 In function '(programAの関数)':
 undefined reference to 'subB1の関数'
と表示されてエラーになります。ディレクトリには subB1.o subB2.o
subA1.o subA2.o programA.o ができてるのですが、
あれこれ調べても原因がわかりません。ヒントでよいですので助言を
お願いします。
/

┣[programB]━┳━[subB1] subB1.c
┃         ┃
┃         ┃
┃         ┗━[subB2] subB2.c

┗[programA]━┳━Makefile.am, configure.in
          ┃
          ┣━[subA1] subA1.c
          ┃
          ┣━[subA2] subA2.c
          ┃
          ┣━[src] programA.c
          ┃
          ┗ subB1.o subB2.o subA1.o subA2.o programA.o

160 :
ツリーのみ:
/

┣[programB]━┳━[subB1] subB1.c
┃         ┃
┃         ┃
┃         ┗━[subB2] subB2.c

┗[programA]━┳━Makefile.am, configure.in
          ┃
          ┣━[subA1] subA1.c
          ┃
          ┣━[subA2] subA2.c
          ┃
          ┣━[src] programA.c
          ┃
          ┗ subB1.o subB2.o subA1.o subA2.o programA.o

161 :
>>159
subB1.oをリンクし忘れてるとか
リンクの際に引きわたす.oの順番を変えてみるとか

162 :
Makefile.am での”xxx_LIBRARIES =, xxx_SOURCES =”や
configure.in での”AC_CONFIG_FILES()”以外に、
リンク先の指定方法があるのでしょうか??
なんとなく、各 Makefile.am でリンク先の指定とか
できそうに思うのですが、調べても判りません orz。

163 :
>>159
なんでそんな不思議な事を…
programBのツリー内でlibprogramB.aでも作ればいいんじゃない

164 :
programA と programB はもともと別の自作ツールで、programB の
一部のソースを programA に流用したもので、Makefile を直接
編集したときはちゃんとコンパイルできるのに、下記のような
Makefile.am configure.in を書いて autoconf automake すると
>>159 のようなエラーが表示されます。なにが悪いのやら…
■ Makefile.am
bin_PROGRAMS = pgA
pgA_SOURCES = \
../programB/subB1/subB1.c \
../programB/subB2/subB2.c \
subA1/subA1.c \
subA2/subA2.c \
src/programA.cc
SUBDIRS = ../programB/subB1 ../program/subB2 subA1 subA2 src

165 :
■ configure.in
AC_PREREQ(2.59)
AC_INIT(pgA, 0.1.0, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([src/programA.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(pgA, 0.1.0)
AM_PROG_LIBTOOL
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h string.h])
AC_C_CONST
AC_TYPE_SIZE_T
AC_FUNC_MALLOC
AC_CHECK_FUNCS([memset strchr strstr])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

166 :
>>164
共通部分はライブラリにしてしまうのがいいと思うのだが、
後、SOURCESなどでは相対パスではなく、$(top_srcdir)
などを利用するのが、最近の流儀です。
# configureを任意のディレクトリで実行可能にするため。
また、SUBDIRSがサブディレクトリではないのも問題になるかも
しれません。
パッケージ構成を再検討したほうがいいと言うのに私も賛成。

167 :
自己解決しました。
*.cc ファイルと *.c ファイルが混在してたのに extern "C" {} で囲んで
なかったのが原因のようですた。これで make が通るようになり pgA が
出来上がったのですが、いまいち腑に落ちないです。なんかちょっと
書き換えただけでエラーの表示内容が変化するので何が悪いのか判りにくい…。
まあ、自分が悪いのですが。 お答えいただいた皆さんありがとう
ございました。

168 :
http://www.ossp.org/pkg/tool/lmtp2nntp/
これなんですけど、LIBS って環境変数を設定してたら、configure に失敗します。
メインの configure で LIBS を自分用にライブラリ追加して設定してるんだけど、
サブの configure にLIBSが環境変数だから引き継がれて悪影響が出てる。
これって、どれ?
1. LIBS を環境変数として指定するのは間違い
2. メインの configure.ac の書き方がまずい
3. autoconf なんてそんなもの

169 :
>>168
LIBSをunsetしてから
LIBS=hoge ./conifgure
とすると、サブのconfigureに引き継がれないという噂が
利用できるかもしれないが、そうでなければ、
> 1. LIBS を環境変数として指定するのは間違い
かな?
> 3. autoconf なんてそんなもの
これの気もするが、、、

170 :
> LIBS=hoge ./conifgure
だめみたい。
うーん、configure.ac で
LIBS="$LIBS_EXTRA $LIBS"
するのを止めて、Makefile.in で、
LIBS = @LIBS_EXTRA@ @LIBS@
しないとだめなのかなぁ。
ぶー、ぶさいく。

171 :
./configure LIBS=hoge

172 :
ちらしの裏に書いて置くべきことなは、
承知のうえで、あえて、誰かに聞いてもらいたい。
Autoconf,Automake,libtoolのおかげで、コンパイル、インストール
は確かに楽になってると思うんだけど、自分でソース弄りたいなぁ
って思うときに、なんかわけわからなくて。
makefileを自作してたりする。んでそれが面倒なんでソース弄るのも
おっくうになってたり。
みんなはどうしてるの?

173 :
自分で書くCソースはそもそもそんなに複雑じゃないので、
autoconfを使わなくてもMakefileはOSに依存せず、
異なるOS間でも共通(同一)になることが多い。
なので、Makefileを自分で直接書いてる。
もしくは、もっと簡単なソースだとMakefileすら要らず、
makeのデフォルトルールだけで make hoge 一発でできてしまうことも多いが。

174 :
>>172
使い方覚えれば自分でソースいじるときもAutotoolsは便利だよ
ソースの依存関係なんてちょっと大きなプロジェクトになると自分で書いてられん
とは言っても最初のmakeにたどり着くまでの作業はちょっと億劫なので
それを自動化したprepare_projectなるスクリプトを書いて使ってる

175 :
autoconfは便利だしとっつきやすいが、
automakeまで手を伸ばすのはちと面倒なんだよな。
どうせ最初から使う必要なんてないんだから、
必要を感じてきたらそのとき導入すればいいよ。
>> prepare_projectなるスクリプト
MS的にいうとautotools_wizardだね


176 :
>>171
なるほど。これいけるね。

177 :
>>175
autoconf単独よりautomakeとセットで使う方が断然らくちんだべや

178 :
NFS上でaclocal等を実行すると、perlがflock使っているところで
止まるんだけど、これってperlを-Ud_flock付きでコンパイルする
以外に方法はないのでしょうか? (aclocalは1.9.6)

179 :
型のサイズが違ったらエラーを出すようにしたいのですけど、
どうしたらいいでしょうか。
configure.inに
AC_CHECK_SIZEOF(int)
AM_CONDITIONAL(CHECK_INT, test "$SIZEOF_INT" = 4)
Makefile.amに
if !CHECK_INT
endif
と書いてみたのですけど、if〜endifの間の書き方が分かりません。
よろしくお願いします。

180 :
>>179
configureの時点で止めてしまうって話でいいのなら、下の感じだとおもう。試してはいないけど。
AC_CHECK_SIZEOF(int)
if test $SIZEOF_INT != 4; then
AC_MSG_FAILURE([aaaa])
fi

181 :
>>180
あれからconfigure.inではなくてconfigure.acを使うようにしたのですが、
configure.acの中からではSIZEOF_INTが見えないようです。
生成されたconfigureを見てみると
#define SIZEOF_INT $ac_cv_sizeof_int
という行がありましたので、
AC_CHECK_SIZEOF(int)
if test x$ac_cv_sizeof_int != x"4"; then
AC_MSG_FAILURE([int must be 4 bytes.])
fi
としてみたらうまくいきました。ありがとうございました。

182 :
autoconf-archive
http://autoconf-archive.cryp.to/macros-by-category.html
を見ていると、マクロの先頭が、AC,ACX,AXなどいくつかありますが、
それぞれどのような違いがあってつけられているのでしょうか。

183 :
automake-1.10が出たので、autoconf-2.60とともに試しにいれてみた。
ついでにm4-1.4.6にしてみた。古いautoconf関係との解離は大きくなった感じ。
あと、autoconf-2.60のmake checkでエラーになるのだが、
これは、m4-1.4.6のせいで、autoconf-2.60aにするといいらしい。
とりあえず、こんな状況。

184 :
--with-foo=XXXXの値をMailfileのDEFS変数に反映させてgccのプリプロセッサに反映させたいのですがうまくいきません。
やり方教えて頂けないでしょうか。
AC_ARG_WITH([foo], [ --with-foo (default is /etc/foo)], def_foo=$withval, def_foo=/var/foo)
AC_DEFINE([HAVE_FOO, [def_foo])
としてもMakefileでは
gcc -DHAVE_FOO=def_foo
となってしまいます、、

185 :
AC_DEFINE_UNQUOTED

186 :
今も聞こえる オウトマケの唄

187 :
>>185
変更したら解決できました。
ありがとうございます。

188 :
AC_CHECK_LIBに/usr/local/libなどのディレクトリも見てもらうようにするには
どうしたらいいんでしょうか?

189 :
そもそも、
AC_CHECK_HEADERSがヘッダを探すサーチパス、
AC_CHECK_LIBがライブラリを探すサーチパス、
は、
どこで定義されていて、
どうやったらそこに任意のディレクトリを追加できるのでしょう?
ドキュメントには記述が発見できず...

190 :
apacheやqmailみたいに1パッケージに複数のアプリケーションが含まれているようなソースツリーの場合にいい感じにconfigureを量産してくれるようなautotoolsが欲しい。

191 :
/usr/share/autoconf とかその辺にあるよ

192 :
>>191
ありがとうございます。
/usr/share/autoconf/autoheader.m4f にそれらしき部分を見つけました。
/usr/share を変更できない権限で configure 実行時にサーチパスを追加
する方法を探しています。
環境変数INCLUDEにセットしてみたり、
./configure INCLUDE=hoge
とかやってみているのですが、うまくいかずです。

193 :
./src
 main.c
 ./others
  hoo.h
という階層があって、main.cからhoo.hを読み込んでいるのですが、Makefile.am
はどのように書けばいいのでしょうか?

194 :
すいません書き忘れです。
./others
 hoo.h
 hoo.c
という感じです

195 :
>>192
環境変数で解決しました。
AC_CHECK_HEADERS は CPPFLAGS=-I<include_dir>、
AC_CHECK_LIB は LIBS=-L<lib_dir>
で設定したディレクトリを探してくれるようです。

196 :
>193
GNU Autoconf/Automake/Libtool
ttp://www.amazon.co.jp/Autoconf-Automake-Libtool-Gary-Vaughan/dp/4274064115/
P48 6.5:よくある質問 から引用
ライブラリのソースが複数のサブディレクトリにあるとき、どうmakeしたらよいでしょうか?
ライブラリではほとんどの場合、libtoolコンビニエンスライブラリを使うことで簡単に解決できます。
しかし、プログラムについては簡単な解決策がなく、パッケージの構造の変更を選ぶ人が少なく有りません。
Automakeの次期メジャーリリースでは、この問題に進展があるはずです。

最新verならできるのかな?この本が翻訳された段階(平成13年)ではまだ無理っぽいみたいだし

197 :
>>196
ありがとうございます
どうにも良く分からないので
./src
 main.c
 ./others
  hoo.h
  hoo.cpp
を、libothers.aとライブラリにして、./srcでリンクさせてます。(リンクが成功しないんですがこれは別問題かと)
うーむ、実際にautotoolsで作ってる人はどうしてるんだろうか

198 :
>>196,197
今試したら少なくともautomake-1.9.5だと
うまくサブディレクトリを扱えるみたい

199 :
具体的な書き方が分からないのですが、教えていただけませんか?

200 :
>>199
とりあえず、、、試してみた。
topdirのMakefile.am (プログラム名はhooと仮定)
SUBDIRS = others
bin_PROGRAMS = foo
foo_SOURCES = main.c
foo_LDDADD = $(top_builddir)/othes/libhoo.la
foo_CFLAGS = -I$(top_srcdir)/others
foo_LDFLAGS = -L$(top_builddir)/others -lhoo
othersのMakefile.am
lib_LTLIBRARIES = libhoo.la
libhoo_la_SOURCES = hoo.c hoo.h
configure.ac
AC_PREREQ(2.61)
AC_INIT([foo], [0.0.0], [nanasi@example.com])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
AC_PROG_LIBTOOL
AC_CONFIG_FILES([Makefile
others/Makefile])
AC_OUTPUT

201 :
>>199
具体的もなにもmain.cのあるディレクトリのMakefile.amで
hoge_SOURCES=main.c others/hoo.h others/hoo.cpp
するだけだよ
othersにあるファイルも同じように扱えるようになったみたいなので
わざわざライブラリにまとめる必要はない

202 :
>>200 >>201
ありがとうございます。
確かにmainのあるディレクトリでothers/hoge.cppと指定すれば出来ました。
しかし、サブディレクトリに物凄くファイルがあるので、階層別にMakefileを作り、ライブラリにしたほうが管理しやすそうに思えます。
あと、>>200さんの方法を使った場合、libhoo.laをインストールするのが普通なのでしょうか?
それともnoinst_LIBRARIESにした方がいいのでしょうか?

203 :
>>202
> あと、>>200さんの方法を使った場合、libhoo.laをインストールするのが普通なのでしょうか?
> それともnoinst_LIBRARIESにした方がいいのでしょうか?
ほかで利用するならインストールするけど、そうでなければ
デフォルトでstaticにしないと不味いかもしれません。
他で使うなら、include_HEADERSにヘッダを書かなきゃだめですが、、、
判断できない場合は、とりあえずインストールするのが無難です。
# libhoo.laはデバッグ時に必要です。

204 :
> libhoo.laはデバッグ時に必要です。
*.laって何するものなの?

205 :
>>204
> *.laって何するものなの?
$ libtool gdb hogehoge
ってやるとき、参照するライブラリが書かれているテキストファイルだと
思っているのですが、、、
識者の方ツッコミよろ。

206 :
noinst_ だったらコンビニエンスライブラリになるから、実行形式の方には最終的に静的リンクされて .la なんか不要になるはず。

207 :
AC_CHECK_HEADERなどで宣言されるHAVE_*の先頭に識別子をつけることはできる?
#define HOGE_HAVE_MEMORY_H
となるような。
hoge_config.hをライブラリのヘッダーから読み込もうと思っているのですが
ライブラリを使う側にHAVE_*が影響してしまうので
ライブラリのコンパイル後に消すか、名前を変えるかしたい。
しかし、ライブラリヘッダーが提供する構造体要素の型をHAVE_*を見て切り替えたいので
単純にconfigヘッダーをインストールしないというわけにもいかず。

208 :
>207
とりあえず、autoconf-2.61 でだけど。
本論と関係ないけど、AC_CHECK_HEADER は HAVE_* を自動で定義してくれなくて、AC_CHECK_HEADERS が、HAVE_* を自動で定義してくれるような。
で、
AC_CHECK_HEADER(test.h, AC_DEFINE(HOGE_HAVE_TEST_H, [], [Define to 1 if you have the <test.h> header file.]))
みたいな感じで自前で書けばいいと思う。autoheader も拾ってくれてるみたいだし。
デフォルトで定義されてしまう分(configure 自体に使用される)についても名前を差し替えたい場合には、_AC_INCLUDES_DEFAULT_REQUIREMENTS か
AC_INCLUDES_DEFAULT の再定義が必要。
ここまで書いて思ったんだけどさ、ライブラリ作成環境と実行環境で HAVE_* の状態が違っているなら正常動作しなくても当然なんじゃない?

209 :
ライブラリのヘッダでconfig.hを読むってのが変だと思うけどなあ。

210 :
>>208
どうも。
AC_CHECK_HEADERSで自己定義して、定義しても自動ででてるーと思ってました。
AC_CHECK_HEADERならでないのですか。
>>209
例えば、
#if HAVE_INTTYPES_H
#include <inttypes.h>
#elif HAVE_STDINT_H
#include <stdint.h>
#else
# ..... 自己定義
#endif
#if HAVE_SYS_STYPES_H
#.......略
typedef size_t my_size_t ;
typedef uint32_t my_uint32_t ;
typedef struct libraryargs {
 my_size_t length;
 my_uint32_t data;
} libraryargs;
DECLARE_EXPORT my_bool_t library_function(libraryargs *args);
というのがあると、size_tやuint32_tが実際なに型なのかconfigureで作ると思っていて
その結果をライブラリコンパイル時に使っているので
ライブラリを使う側も同じ型を使って欲しいと思うんです。
それをまた#ifdef _WIN32でやっているとconfigureの意味が無いというか。
普通どうやるんでしょ?

211 :
>>208
>ライブラリ作成環境と実行環境で HAVE_* の状態が違っているなら正常動作しなくても当然なんじゃない?
動作というより、他のプログラムが使う可能性のあるマクロ名を汚染してしまうのが嫌。
Cだから仕方が無いといえばそうだけど、せめてHOGE_*にしてあげたい。

212 :
不要なものをhoge_config.h.inから削除するとhoge_config.hに反映されないことに気づきました。

213 :
>>210
ライブラリのヘッダファイルであるかどうかわからないtypedefをさらにtypedefって
あまり見ないような。大抵自分で型を判断してやってないか。

214 :
>>213
自分で判断というのはhogeが定義してあるのでOSはhageだとかCPUはfooだとかで
つまり4バイト数値型はhoge_intとかですか。
それがconfigureでやることではないのですか?

215 :
>>214
そのライブラリを使うアプリのconfigureでやればいいんでない?
そういう話では無いのかな

216 :
>215
ライブラリを使う側でいちいちどのマクロを定義してやる必要があるかを考えるのが面倒くさい…と思ったんだけど、
そのライブラリ用に Autoconf マクロを作ってしまうというのでその点は解決するか。
その上で、ヘッダ側では
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
しておけば OK かな。

217 :
>>216
うん。ライブラリ側で、hoge.m4作って、share/aclocal以下にインストールしてあげる。
hoge.m4はAC_DEFINE()とか、一部AH_VERBATIM()とかでconfig.h.inに追加する感じ。
結構面倒な作業になるのかもしれないけど、、、
まあ、hoge_config.h.inから作るってのも解決方法の一つかもしれないけど、
どっちが良いかはよく分からないです。

218 :
CFLAGSとCPPFLAGSの違いがよくわかりません
Cプリプロセッサフラグってどういうことでしょうか?
-I/fuga/fuge/
をコンパイル時に指定したい場合、
CFLAGS=-I/fuga/fuge/
だと追加されなくて
CPPFLAGSに指定すると追加されてました。
ちなみにC++のファイルです。

219 :
なぜそこで
> Cプリプロセッサフラグ
という自分の推測が間違っているということを疑わないのか。

220 :
いや、推測じゃないです。
http://sources.redhat.com/automake/automake.html

CPPFLAGS
C/C++ preprocessor flags
となってます。

221 :
まず問いたい。
おまえはそれを見て、それが正解だと推測したわけだよな?
公式のマニュアルではなく、なぜそんな下らんもので推測したんだ?

222 :
>>221
いや、これ、infoのhtml版だから、ほぼ正式と思っていいと思う。
>>218
http://sources.redhat.com/automake/automake.html#C_002b_002b-Support
CXXFLAGSがC++のときのCFLAGSみたいなもの
プリプロセッサとは、
http://e-words.jp/w/E38397E383AAE38397E383ADE382BBE38383E382B5.html
これでも読んでくれ。#includeを処理するのが何か分かれば
多分理解できると思う。

223 :
ありがとうございます。
プリプロセッサの処理にコマンド指定できるんですね・・・知らんかったです。
C++でのオプションはCXXFLAGSで指定します。
サンクスでした

224 :
まず問いたい。
>という自分の推測が間違っているということを疑わないのか。
という発言が出てくるのか。
CPPFLAGSがC++用フラグだとでも自分の推測で発言したのか?w

225 :
bin_PROGRAMS=/tmp/fuga
とか出来ないんですけど、/tmp/下に生成したい場合とかどうすればいいんですか?

226 :
できるかどうかわからないけど、なぜそういうことをしたいのか
の目的がわかれば、別の解決法が出てくるかもね。

227 :
自分のホームディレクトリにソースがあったとしても、
/tmp/でmakeしたいんです。
/home/my/src/"ここにソースがある"
けど、makeを叩くことで、
/tmp/でビルドさせたいんです。

228 :
>>227
> 自分のホームディレクトリにソースがあったとしても、
> /tmp/でmakeしたいんです。
/tmp で/home/my/src/configure
すれば、/tmp以下にMakefileができると思うけど。
そういう話ではない?

229 :
Makefileの中身が相対パスで書かれてるみたいなので、
/tmpでmakeをしてもエラーが出るんですよね・・・
やっぱり、ソースツリーを全部/tmpにコピーってconfigure,makeした方が
早いですかね?

230 :
それは多分そのプログラムの方が悪い(autotoolsの使い方の問題)。
tmpに全部コピーした方が早そう。

231 :
普通、相対パスで書かないものですか?

232 :
>>231
srcdir や top_srcdir への相対パスなら大丈夫だけど、
# 絶対パスならabsを付ける
カレントディレクトリからのパスになってるんじゃない?

233 :
prog_SOURCESにカレントディレクトリ以外のファイルを以下のように指定すると
my_src_dir=/home/xxx/src/
prog_SOURCES=$(my_src_dir)test.c
生成されるMakefileに
include ./$(DEPDIR)/prog-$(my_src_dir)test.Po
という記述がされて、
./deps/prog-/home/xxx/src/test.Po
を見に行ってしまいエラーになってしまいます。
回避する方法ってありますか?

234 :
>233
my_src_dir=/home/xxx/src
prog_SOURCES=$(my_src_dir)/test.c
だったら通ったりしない?
って絶対パスじゃないと駄目なの?そーいうのはソースじゃなくてライブラリにしないか?

235 :
あちこちにあるファイルを集めて一つのディレクトリツリーを作りたいんですが、
なんかうまいやりかたは無いんでしょうか
a/b/c/hoge : d/e/hoge
install ...
a/b/c/huga : f/g/huga
...
とか延々と書くのが面倒臭いんです...


236 :
>>234
ダメなんです。なぜかそういう風に展開されちゃうんですよね・・・

237 :
同じソースファイルを使って、実行ファイルと共有ライブラリを
作りたいのですが、
‘created with both libtool and without’エラーが吐かれて、
うまくいきません。
http://www.gnu.org/software/automake/manual/html_node/Libtool-Issues.html
の8.3.9.2 Objects ‘created with both libtool and without’
に解決らしき記述があるのですが、意味がわからず困っています。
どうしろと書いてあるのでしょうか?

238 :
>>237
そこの
> A workaround for this issue is
以下をていねいに読めばだいたいわからんかな?
prog_CFLAGS = $(AM_CFLAGS)
を追加して、副作用として prog.c と foo.c が prog-prog.o と prog-foo.o に
コンパイルされるようにする(そうすることで、ライブラリのほうの
オブジェクトファイルと、名前がぶつからないようにする)、とある。

239 :
linuxなんですがAutoconf,Automakeについて質問してもいいですか?

240 :
どうぞ

241 :
hoyu

242 :
http://shop.oreilly.com/product/0636920025108.do
良いか?

243 :
llvm bitcodeを中間コードとしてビルドするようなmakefileをautotoolsで作れませんかね?

244 :
--with-* と --enable-* との使い分け方が解らない。
http://www.geocities.co.jp/SiliconValley-Oakland/3432/man/autoconf/autoconf-ja_9.html
を読んでも解らない。
どっちを使っても良いのかな?

245 :
ぐぐったら入力途中で候補にautoconf with vs enableというのが出てきたので
その結果を見てみたらいろいろと議論はあるようだ。
https://mail.python.org/pipermail/python-dev/2001-January/011991.html
ここの解説だと、機能の有無を決めるのにenable、依存するパッケージとかの
指定にwithを使うという感じみたい。それでも例外もあるようだ。

246 :
>>245
構文はそっくりだけど意味は違うよ、適切に使い分けてね
って事かな…?
今回はpackageの有無で機能を切り替えるので--with-*を使うことにするわ、サンクス!

247 :
英語の意味通りですな

248 :
キター!
From: Stefano Lattarini <stefano.lattarini@gmail.com>
To: Automake List <automake@gnu.org>
Cc: info-gnu@gnu.org, autotools-announce@gnu.org
日付: 2015年1月6日 19:19
件名: GNU Automake 1.15 released
We are pleased to announce the GNU Automake 1.15 minor release.
(snip)
Download here:
ftp://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
ftp://ftp.gnu.org/gnu/automake/automake-1.15.tar.xz

249 :
2年ぶり!

From: Mathieu Lirzin <mthl@gnu.org>
To: <automake@gnu.org>
Subject: GNU Automake 1.15.1 released
Date: Mon, 19 Jun 2017 22:50:34 +0200
Message-ID: <87shivem79.fsf@gnu.org>

We are pleased to announce the GNU Automake 1.15.1 maintenance release.

250 :
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

CAEY39R21B

251 :
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

CGFTL

252 :2020/03/22
過疎化してますね、このスレ.

From: Jim Meyering <jim@meyering.net>
To: info-gnu@gnu.org
Subject: automake-1.16.2 released [stable]
Date: Sat, 21 Mar 2020 17:51:38 -0700
Message-ID: <m2eetlp5yd.fsf@meyering.net>
List-Archive: <https://lists.gnu.org/archive/html/automake>
Cc: automake@gnu.org

This is to announce automake-1.16.2, a stable release.

There have been 38 commits by 12 people in the two years
(almost to the day) since 1.16.1. Special thanks to Karl Berry
for doing a lot of the recent work preparing for this release.

See the NEWS below for a brief summary.

telnetについて語れ。
おい、イブの夜にUnixいじくってるウンコども!3晩目
初心者もOK! FreeBSD質問スレッド その120
Cygwin使っている人いますか? その21
中級者もOK! FreeBSD質問スレッド
NEC EWS4800 サイコー
muttを使おう
デートを秋葉原でするツワモノの数→
シェルスクリプト総合 その26
UNIX板のバナーつくってあげよう!
--------------------
登美丘高校ダンス部 part8
消費税10%
【HONDA】F1ホンダエンジン応援スレ【302基目】
【医学科】北海道大学医学部【看護学科】
Amazonプライムビデオで見られる海外番組16
☆☆フィニッシングスクール☆☆
お茶会スレッド〜純情恋愛板店〜13
【一陸技】陸上無線技術士 part35【二陸技】
ガンプラ系YouTuberを語るスレ 6 (IP・ワッチョイ無し
【晃華学園事件】住所不詳 水岡裁判もついに水岡敗訴【バカ丸出し】
【競馬ワールドカップ】韓国競馬の祭典「コリアカップ」に優勝独占の“日本馬”が出走できない理由[9/3]
【ホワイト国除外】 海外の韓国系住民も不買運動に賛同 「日本は世界平和にとって脅威である。 軍国主義が復活した」
☆★★★★★ 加藤和彦 5 ★★★★★★
アジャイルを考えたやつの死を願うスレ Part.2
世界を支配してるのはどういう層なの?(((( ;゚д゚))) [762468954]
【労組】山口義和さんと難波奨二さんを応援しよう!
矢島信男・田中信夫・八名信夫3人のノブオを語る
アイカツフレンズ! 友達36人目
最近のHPは字が小さすぎるヾ(`д´゙)ノ
【初心者も】★海★のべ竿釣り★【気軽に】1
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼