[Armadillo:07527] Re: clock_gettime()の参照解決

nakayama junichi email@hidden
2011年 9月 5日 (月) 17:14:06 JST


竹之下様

いつもお世話になっております。
ONICOSの中山と申します。

> 先ほど例示したmakefileは、PKGCONFIG_PATHを除くと、
> 「Armadillo 実践開発ガイド」で紹介しているテンプレート通りの書き方になります。 
> 
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-1_ja-2.1.0/ch07.html#fig_makefile_for_cross_compile
>
> このmakefileで、一度ビルドを試していただくことはできますでしょうか?

ご指摘を受けてMakefileを修正したところ、
ビルドが通りました。

問題の原因はかなり細かい話になりますが、説明させていただきます。
以下のとおりです。
----------------------------------------------------
-lrtの指定をmakeの依存関係のところ
(ターゲット名 コロン の右横部分)に記述していました。
これをLDFLAGS変数に設定するように移動したところ、
問題が解決しました。
オライリーの書籍"GNU Make 第3版"に、
-lrtのようなオプションを依存関係のところに記述する例が
あったので、真似していたのですが、
ここで指定すると、/usr/libを見にいってしまうようです。
依存関係以外の箇所に配置すれば、
本件のような問題は発生しません。
----------------------------------------------------

以上、よろしくお願いいたします。

-----------------------------------
中山 純一(Nakayama Junichi)
オニコス株式会社
TEL:03-5850-4345
FAX:03-3801-3051
e-mail:email@hidden
-----------------------------------


--------------------------------------------------
From: "Takenoshita Koyo" <email@hidden>
Sent: Monday, September 05, 2011 4:18 PM
To: <email@hidden>
Subject: [Armadillo:07524] Re: clock_gettime()の参照解決

> 竹之下です。
>
> 申し訳ありません。少し訂正します。
>
>> もし、共有ファイルが存在するのに、それを見つけてくれない場合、
>> PKGCONFIG_PATHが適切に設定されていない場合が考えられます。
> 今回の場合、pkgconfigは使って無いので、PKGCONFIG_PATHは関係ないですね。
>
> 先ほど例示したmakefileは、PKGCONFIG_PATHを除くと、
> 「Armadillo 実践開発ガイド」で紹介しているテンプレート通りの書き方になります。 
> 
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-1_ja-2.1.0/ch07.html#fig_makefile_for_cross_compile
>
> このmakefileで、一度ビルドを試していただくことはできますでしょうか?
>
> (2011年09月05日 15:50), Takenoshita Koyo wrote:
>> 竹之下です。
>>
>>> 共有ライブラリを使用して、ダイナミックリンクできると一番いいのですが。。。 
>>> 
>> 共有ライブラリは、存在していますか?
>>
>> 手元の環境では、以下のようになっています。
>> [ATDE ~]$ ls -l /usr/arm-linux-gnueabi/lib/librt*
>> -rw-r--r-- 1 root root 26572 2009-10-21 19:01 
>> /usr/arm-linux-gnueabi/lib/librt-2.7.so
>> -rw-r--r-- 1 root root 63858 2009-10-21 19:06 
>> /usr/arm-linux-gnueabi/lib/librt.a
>> lrwxrwxrwx 1 root root    10 2010-06-10 23:00 
>> /usr/arm-linux-gnueabi/lib/librt.so ->  librt.so.1
>> lrwxrwxrwx 1 root root    12 2010-06-10 23:00 
>> /usr/arm-linux-gnueabi/lib/librt.so.1 ->  librt-2.7.so
>>
>> もし、共有ファイルが存在するのに、それを見つけてくれない場合、
>> PKGCONFIG_PATHが適切に設定されていない場合が考えられます。
>>
>> makefileとして、以下のものを使うとlibrtを探してくれるようになりませんでしょうか?
>> targetの部分は、適当に読み替えてください。
>>
>> ============ makefile ここから ======================
>> CROSS := arm-linux-gnueabi
>>
>> ifneq ($(CROSS),)
>> CROSS_PREFIX := $(CROSS)-
>> PKGCONFIG_PATH  := /usr/$(CROSS)/lib/pkgconfig
>> endif
>>
>> CC = $(CROSS_PREFIX)gcc
>> CFLAGS = -Wall -Wextra -O2
>> LDFLAGS = -lrt
>>
>> all: target
>>
>> target: target.o
>> $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
>>
>> clean:
>> $(RM) *~ *.o $(TARGET)
>>
>> %.o: %.c
>> $(CC) $(CFLAGS) -c -o $@ $<
>> ============ makefile ここまで ======================
>>
>> もし、それでもダメな場合、makefile とビルドログを見せていただくことはできますか?
>>
>> (2011年09月05日 15:28), nakayama junichi wrote:
>>> いつもお世話になっております。
>>> ONICOSの中山と申します。
>>>
>>> 標題の件ですが、
>>> ATDE環境にある
>>> /usr/arm-linux-gnueabi/lib/librt.a
>>> を直接スタティックリンクするという方法でとりあえず解決しました。
>>>
>>> 共有ライブラリを使用して、ダイナミックリンクできると一番いいのですが。。。 
>>> 
>>>
>>> -----------------------------------
>>> 中山 純一(Nakayama Junichi)
>>> オニコス株式会社
>>> TEL:03-5850-4345
>>> FAX:03-3801-3051
>>> e-mail:email@hidden
>>> -----------------------------------
>>>
>>>
>>> --------------------------------------------------
>>> From: "nakayama junichi"<email@hidden>
>>> Sent: Monday, September 05, 2011 2:39 PM
>>> To: "Armadillo series general discussion list"
>>> <email@hidden>
>>> Subject: [Armadillo:07514] Re:clock_gettime()の参照解決
>>>
>>>> いつもお世話になっております。
>>>> ONICOSの中山と申します。
>>>>
>>>>> あるプログラムでclock_gettime()システムコールを呼んでいるのですが、
>>>>> これをクロスコンパイルしようとすると参照エラーになります。
>>>>
>>>> 補足情報です。
>>>> コンフィグレーションで、使用するCライブラリは
>>>> (None) Libc Version
>>>> と設定しており、
>>>> ATDE3の/home/atmark/atmark-dist-20110704/lib
>>>> にはlibrtがない状態です。
>>>>
>>>> email@hidden:~/atmark-dist$ ls /home/atmark/atmark-dist-20110704/lib -l
>>>> 合計 104
>>>> -rw-r--r-- 1 atmark atmark 5840 2011-07-04 12:10 Makefile
>>>> drwxr-xr-x 7 atmark atmark 4096 2011-07-04 12:10 STLport
>>>> drwxr-xr-x 6 atmark atmark 4096 2011-07-04 12:10 adns
>>>> drwxr-xr-x 11 atmark atmark 4096 2011-07-04 12:10 expat
>>>> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 12:10 flex
>>>> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 12:10 libaes
>>>> drwxr-xr-x 5 atmark atmark 4096 2011-07-04 12:10 libatm
>>>> drwxr-xr-x 24 atmark atmark 4096 2011-07-04 12:10 libc
>>>> drwxr-xr-x 7 atmark atmark 4096 2011-07-04 12:10 libccmalloc
>>>> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 12:10 libcrypt_old
>>>> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 12:10 libdes
>>>> drwxr-xr-x 3 atmark atmark 4096 2011-07-04 12:10 libg
>>>> drwxr-xr-x 11 atmark atmark 4096 2011-07-04 12:10 libgmp
>>>> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 12:10 libjpeg
>>>> drwxr-xr-x 10 atmark atmark 4096 2011-07-04 12:10 libldap
>>>> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 12:10 libm
>>>> drwxr-xr-x 2 atmark atmark 4096 2011-09-05 13:23 libnet
>>>> lrwxrwxrwx 1 atmark atmark 53 2011-09-05 14:18 libnet.a ->
>>>> /home/atmark/atmark-dist-20110704/lib/libnet/libnet.a
>>>> drwxr-xr-x 11 atmark atmark 4096 2011-07-04 12:10 libpam
>>>> drwxr-xr-x 7 atmark atmark 4096 2011-07-04 12:10 libpcap
>>>> drwxr-xr-x 5 atmark atmark 4096 2011-07-04 12:10 libpng
>>>> drwxr-xr-x 4 atmark atmark 4096 2011-08-01 16:44 libsysfs2
>>>> drwxr-xr-x 5 atmark atmark 4096 2011-07-04 12:10 libupnp
>>>> lrwxrwxrwx 1 atmark atmark 49 2011-09-05 14:18 libz.a ->
>>>> /home/atmark/atmark-dist-20110704/lib/zlib/libz.a
>>>> drwxr-xr-x 7 atmark atmark 4096 2011-09-05 13:23 nss-mdns
>>>> drwxr-xr-x 4 atmark atmark 4096 2011-07-04 12:10 prebuild
>>>> drwxr-xr-x 7 atmark atmark 4096 2011-09-05 13:23 zlib
>>>>
>>>> 以上、よろしくお願いいたします。
>>>>
>>>> -----------------------------------
>>>> 中山 純一(Nakayama Junichi)
>>>> オニコス株式会社
>>>> TEL:03-5850-4345
>>>> FAX:03-3801-3051
>>>> e-mail:email@hidden
>>>> -----------------------------------
>>>>
>>>>
>>>> --------------------------------------------------
>>>> From: "nakayama junichi"<email@hidden>
>>>> Sent: Monday, September 05, 2011 1:50 PM
>>>> To: "atmarktechno ML"<email@hidden>
>>>> Subject: [Armadillo:07512]clock_gettime()の参照解決
>>>>
>>>>> いつもお世話になっております。
>>>>> オニコス株式会社の中山と申します。
>>>>>
>>>>> ATDE3環境で、Armadillo-440上で動作するアプリケーションを開発しています。 
>>>>> 
>>>>> あるプログラムでclock_gettime()システムコールを呼んでいるのですが、
>>>>> これをクロスコンパイルしようとすると参照エラーになります。
>>>>>
>>>>> librtをリンクしていないので、当り前なのですが、
>>>>> -lrtというオプションを付けると
>>>>> /usr/arm-linux-gnueabi/lib/
>>>>> ではなく、
>>>>> /usr/lib/にあるライブラリをリンクしようとするのです。
>>>>> このため、ファイルフォーマットが違う、というメッセージが出てビルドに
>>>>> 失敗します。
>>>>> (なお、こちらで作成したMakefileではVPATH変数の値を上書きしております)
>>>>>
>>>>> 初歩的な問題かもしれませんが、
>>>>> アドバイス等をいただけますと幸いです。
>>>>>
>>>>> 以上、よろしくお願いいたします。
>>>>>
>>>>> -----------------------------------
>>>>> 中山 純一(Nakayama Junichi)
>>>>> オニコス株式会社
>>>>> TEL:03-5850-4345
>>>>> FAX:03-3801-3051
>>>>> e-mail:email@hidden
>>>>> -----------------------------------
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> armadillo mailing list
>>>>> email@hidden
>>>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>>
>>>> _______________________________________________
>>>> armadillo mailing list
>>>> email@hidden
>>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>
>>> _______________________________________________
>>> armadillo mailing list
>>> email@hidden
>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>
>>
>>
>
>
> -- 
> Koyo Takenoshita
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo 




armadillo メーリングリストの案内