バグ #1996
完了RtORB+OpenRTMがMac上でコンパイルが通らない
100%
説明
原さんからレポート
make
Making all in build
make1: Nothing to be done for `all'.
Making all in src
Making all in lib
Making all in coil
Making all in include
Making all in coil
make all-am
cp -p ../../posix/coil/*.h .
cp -p ../../common/*.h .
make5: Nothing to be done for `all-am'.
Making all in posix
Making all in coil
/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I.. -I../../include -Wall -fPIC -O2 -Wall -fPIC -O2 -MT Allocator.lo -MD -MP -MF .deps/Allocator.Tpo -c -o Allocator.lo Allocator.cpp
../../libtool: line 2085: Allocator.cpp: command not found
libtool: compile: g++ -DHAVE_CONFIG_H -I.. -I../../include -Wall -fPIC -O2 -Wall -fPIC -O2 -MT Allocator.lo -MD -MP -MF .deps/Allocator.Tpo -c "" -fno-common -DPIC -o .libs/Allocator.o
i686-apple-darwin10-g++-4.2.1: no input files
make5: * [Allocator.lo] Error 1
make4: [all-recursive] Error 1
make3: [all-recursive] Error 1
make2: [all-recursive] Error 1
make1: [all-recursive] Error 1
make: * [all-recursive] Error 1
となってコンパイルできません。Linuxでは、できるようですが、、、、
configure.ac等を確認していただけないでしょうか。
ファイル
n-ando さんがほぼ14年前に更新
原さんの追加情報
原です。私の方でも少し調べてみました。
どうもMacでconfigure.acしかない状態(リポジトリの状態)では、
build/autogen で生成されたconfigureでは、コンパイルできないようです。
生成されたconfigureが悪いのかどうかわかりませんが、前のソースでも
build/autogenで生成すると同様のエラーがでます。
Webにあるtgzで固められたソースコードの中にあるconfigureでは、コンパイルできますので、
autogenのスクリプトに不具合がある(多分、autoconfなどのバージョンよるか、Macでは少し改良されている
かもしれません)のかもしれません。
n-ando さんがほぼ14年前に更新
- ファイル installed_ports installed_ports を追加
- ファイル rtorb_macosx.patch rtorb_macosx.patch を追加
原さんへの返事
こちらのmacで調べてみましたが、原さんのようなlibtoolがらみの
問題は特に再現できませんでした。以下のようにコンパイルしました。
1. libIDLをmacportsでインストール
2. endian をmacportsでインストール
3. /usr/include/i386/endian.h を /usr/include/endian.h にリンクを張る
4.RtORBを添付のパッチのように変更
5. RtORB をコンパイル
6. OpenRTM-aistをチェックアウト
7. OpenRTM-aist を -with-rtorb= でコンパイル
./build/autogen
./configure --with-rtorb=...
make
途中、stub/skel/common/h のソース内の : : を :: に変更
原さんのようなlibtoolがらみでのエラーは特にありませんでした。
ただ、RtORBの方で、rtorb-idlが生成したコードに、以前問題になっていた
名前解決子の"::"が": :"になってしまう問題が発生していました。
こちらのlibidlは0.8.14ですが、これが問題なんでしょうか?
とりあえず一括置換でコンパイルは通りました。
添付に、こちらのmacportsのインストール済みパッケージ一覧をお送りします。
ちなみに、Mac OS Xではe2fsprogsをインストールしなくてもデフォルトで
/usr/include/uuid/uuid.h があり、libc内にUUIDの関数があります。
ですので-luuidをしなくてもUUID関連の関数が利用できます。
結論として、automake/autoconf/litoolはバージョンを選ぶので、
開発者のところでそれらが正しく動けは問題ないと思います。
OpenRTM-aistではそれぞれ1.9, 2.59, 1.5 を仮定しています。
そちらの、automake/autoconf/libtoolのバージョンを教えていただけますか?
n-ando さんがほぼ14年前に更新
原です。libtoolについて、もう少し調べてみました。
結論からすると、libtool2.4でもコンパイルはできます。
但し、現在のautogenのスクリプトで autoreconf を呼び出しては
コンパイルできません。これは、libtool.m4が2つ存在しており、
1つは、 /opt/local/share/aclocalの下にあり、もう1つが、/usr/share/aclocalの
したにあります。この2つは、どうやら別のようです。
MacでXcodeをインストールするとほとんどのツールは、/opt 以下にインストールされる
ようです。そのため、autogen のスクリプトで、libtool.m4をさがすときに、
/opt/local/share/aclocal を /usr/share/aclocal の前に検索すれば、問題は
回避できます。
build/autogenの変更をお願いいたします。