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

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 3,065

black_selena

score 6

前提・実現したいこと

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

#include "jpegio.h"

int main(void) {

  char *filename = "Huukei.jpg";
  //画像データ配列の先頭へのポインタ
  BYTE* imageData = NULL;
  int Width;
  int Height;
  int BPP;
  int imageSize;
  int dataSize;

  Width  = readHeader(filename, IMAGE_WIDTH);
  Height  = readHeader(filename, IMAGE_HEIGHT);
  BPP  = readHeader(filename, IMAGE_BPP);
  imageSize = Width*Height*BPP;
  //データサイズの読み込み
  dataSize = readJpeg(filename, &imageData);


  printf("Width:%d\n", Width);
  printf("Height:%d\n", Height);
  printf("BPP:%d\n", BPP);
  printf("ImageSize(Width*Height*BPP):%d\n", imageSize);
  printf("ImageSize(readJpegによる読み込み):%d\n", dataSize);
  if(imageSize == dataSize) {
    printf("一致しました.\n");
  }

  return 0;
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る