Armadilloフォーラム

C++言語でCURLを使用したプログラムを作る

mamoru.yahata

2016年5月20日 11時49分

お世話になります。

WS1でCURLを使用したC++で作成したプログラムを動作させたいです。
これに関連する情報、サイト等頂けたら幸いです。

CURLと記しましたが、当該C++プログラムで行いたいことは、
HTTP(S)を用いた、POST等の通信です。
これが出来れば、CURLでなくても良いです。

現在の状況は以下の通りです。

開発環境(VMWareのゲスト)にて、CURLを使用するプログラムをC++で作って、WS1で動作確認を行いました。
プログラムを実行すると下記のエラーが。
-----
./FooCpp: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
-----

WS1のカーネル?を何かしてビルドする必要がありますでしょうか。
それとも、当該C++プログラムのビルド時の対処(Makeファイル修正)で事足りますでしょうか。

どうぞよろしくお願い致します。


コメント

at_yashi

2016年5月20日 20時11分

プログラムを実行したのは、VMware上でですか? それとも、Armadillo上で?

エラー自体は、libcurl3-gnutlsに含まれているライブラリを実行時に見つけられないと言っています。

mamoru.yahata

2016年5月20日 20時38分

ご対応をどうもありがとうございます。
プログラムを実行したのは、Armadillo(Armadillo-WS1)上です。

見つからないライブラリ群を、ArmadilloにマウントしたUSB等に配置し、シンボリックリンクを張り・・・と進めていけば、動作するようになります。

このような解決方法で良いのかが分からず。

そもそも、ビルドの方法の問題か?とも考え、質問させてもらった次第です。
ビルドの方法によっては、ライブラリが見つからない!ということも起きないのかと。

> プログラムを実行したのは、VMware上でですか? それとも、Armadillo上で?
>
> エラー自体は、libcurl3-gnutlsに含まれているライブラリを実行時に見つけられないと言っています。
>

at_yashi

2016年5月23日 15時44分

問題ないです。

実行ファイルに必要なライブラリは、

dist/vendors/AtmarkTechno/Common/tools/lib-inst.shdist/vendors/AtmarkTechno/Common/tools/lib-inst.sh

が自動的に拾うようになっています。ただし dynamic load するライブラリを
自動的にみつける方法がないので、手で入れる必要があります。

libcurl-gnutls.so.4 は、dynamic load されるものではなくリンクされてい
るので、 make romfs 時に拾われそうなものですが...

mamoru.yahata

2016年5月26日 11時54分

早速のご対応をどうもありがとうございました。
当方では、開発環境(VM)上でビルドした実行ファイルのみをターゲットボードに転送して動作を行っていました。
このような方法だったために、自前で必要なライブラリを用意しなければならなかった、ということを頂いたご回答をもとに理解しました。
make romfsでromのイメージを作成すれば、必要なライブラリは解決されるということで、理解しました。
試してみたいと思います。
本件、これにてクローズです。ありがとうございました。

> 問題ないです。
>
> 実行ファイルに必要なライブラリは、
>
> dist/vendors/AtmarkTechno/Common/tools/lib-inst.shdist/vendors/AtmarkTechno/Common/tools/lib-inst.sh
>
> が自動的に拾うようになっています。ただし dynamic load するライブラリを
> 自動的にみつける方法がないので、手で入れる必要があります。
>
> libcurl-gnutls.so.4 は、dynamic load されるものではなくリンクされてい
> るので、 make romfs 時に拾われそうなものですが...