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

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

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

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

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

Q&A

1回答

9377閲覧

jpeglib.hを含んだコンパイルができません

black_selena

総合スコア8

C

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

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

0グッド

0クリップ

投稿2016/09/15 15:55

###前提・実現したいこと
test.c(一番下に載せてます)をコンパイルしたく、
gcc -Wall test.c -ljpeg
としてコンパイルしてもコンパイルができません。エラーメッセージは以下です。

In file included from test.c:1: ./jpegio.h:5:10: fatal error: 'jpeglib.h' file not found #include <jpeglib.h> ^ 1 error generated.

jpegio.hで#include <jpeglib.h>とjpeglib.hをincludeしています。
jpeglibはhttp://www.ijg.org/より入手し、以下の手順を実行済みです。

#cd jpeg-6b #./configure --prefix=/usr/local #make #make install

/usr/local/includeの中にjpeglib.hがあることは確認できます。
パスの問題なのかと思い、
gcc -I /usr/local/include test.c
としてコンパイルすると、

(略) "_jpeg_write_scanlines", referenced from: _writeJpeg in test-9d7f1b.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

のようなエラーメッセージでコンパイルができません。
どのようにすればコンパイルできますか。
よろしくお願いします。

###test.c

c

1#include "jpegio.h" 2 3int main(void) { 4 5 char *filename = "Huukei.jpg"; 6 //画像データ配列の先頭へのポインタ 7 BYTE* imageData = NULL; 8 int Width; 9 int Height; 10 int BPP; 11 int imageSize; 12 int dataSize; 13 14 Width = readHeader(filename, IMAGE_WIDTH); 15 Height = readHeader(filename, IMAGE_HEIGHT); 16 BPP = readHeader(filename, IMAGE_BPP); 17 imageSize = Width*Height*BPP; 18 //データサイズの読み込み 19 dataSize = readJpeg(filename, &imageData); 20 21 22 printf("Width:%d\n", Width); 23 printf("Height:%d\n", Height); 24 printf("BPP:%d\n", BPP); 25 printf("ImageSize(Width*Height*BPP):%d\n", imageSize); 26 printf("ImageSize(readJpegによる読み込み):%d\n", dataSize); 27 if(imageSize == dataSize) { 28 printf("一致しました.\n"); 29 } 30 31 return 0; 32} 33

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

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

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

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

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

guest

回答1

0

gcc -Wall -I /usr/local/include -ljpeg test.cでどうですか?

最初のはコンパイルエラーでヘッダファイルを取り込めていなかったためですよね。2回目のはリンクエラーです。エラーメッセージからするとjpeg_write_scanlinesが無いと言っています。で、この2度目のコンパイルの時はライブラリの指定がされていません。もし、jpeg_write_scanlinesがjpeglibに入ってるとしたら、これで通るかもしれません。
(でも、リンク時のエラーにあるjpegWriteっていうのが、提示されているソースでは呼んでいないんですよね。他の関数から呼ばれているかもしれないですけど)

投稿2016/09/16 15:34

archiver

総合スコア1557

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問