質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

Q&A

解決済

1回答

8439閲覧

C言語での外部ライブラリの使い方

peachkun

総合スコア20

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

0グッド

0クリップ

投稿2016/08/21 05:12

###前提・実現したいこと
C言語で外部ライブラリを使いたいです。
私は、フォルダの中に最初からライブラリファイルが入っているものだと思っていたんですが、そのようなファイルは見当たりませんでした。
自分でライブラリファイルを作成し、リンクする必要があるのかと思い、いろいろ試してみたのですが、うまくいきません。
あまり基本的なことがわかっていないので、よろしければ一般的なライブラリの使用方法について教えていただきたいです。
ちなみにこちらのライブラリを使って下記のコードを動かしたいと思っております。
http://xmailserver.org/libpcl.html
環境はOSX ElCapitan 10.11.5です。
よろしくお願いします。

###該当のソースコード

c

1 2#include <pcl.h> 3#include <stdio.h> 4 5#define CO_STACK_SIZE (32 * 1024) 6 7void spawn(void *arg){ 8 printf("%d\n",1); 9 co_resume(); 10 printf("%d\n",3); 11} 12 13int main(){ 14 coroutine_t co; 15 16 co = co_create(&spawn,NULL,NULL,CO_STACK_SIZE); 17 co_call(co); 18 printf("%d\n",2); 19 co_call(co); 20 printf("%d\n",4); 21 22 return 0; 23}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ライブラリの中には,すでにコンパイル済みの状態で配布しているものもありますが,当該のものは自身でコンパイル+インストール(配置)する必要があるもののようです.

フォルダ内のファイル構成から,Autotools を使うタイプだと思われますので,以下のコマンドでインストールして使います.

./configure make all make install

通常は/usr/local以下にインストールされ,特に何も考えなくてもgcc -lpclなどのオプションでリンクできると思います.
一方で,仮に「ユーザーディレクトリ以下のみで有効にしたい」などの要望がある場合は,
./configure --prefix=${配置したいディレクトリのパス}とインストールパスを指定した上で,ご自身のコードをコンパイルするときにgcc -L${配置したディレクトリのパス}/libなどのようにしてリンクする必要があります.

ちなみに,「一般的なライブラリ」としては,Autotools の他に CMake を使うもの(最近はこっちが流行りかな?)もあります.
こちらの場合は,./configure の部分が cmake コマンドに変わるだけです.

投稿2016/08/21 09:08

tamy

総合スコア442

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peachkun

2016/08/21 09:26

ご丁寧に有り難うございました。 なぜかSegmentation faultを吐きましたが無事実行することができました。 ライブラリについてもっと詳しく調べてみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問