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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

解決済

【C++】CMakeでビルド時にOpenCVのライブラリが見つからない

HoriemonHack
HoriemonHack

総合スコア51

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1回答

0評価

0クリップ

185閲覧

投稿2022/06/26 05:28

CMakeでビルド時にOpenCVのライブラリが見つからない(undefined reference to)と怒られます。
CMakeLists.txtではinclude_directories(/usr/local/include/opencv4)としているはずですが、
他に追加せねばならないことがあれば教えてください。

環境はUbuntu18.04です。

CMakeLists.txt

cmake

cmake_minimum_required(VERSION 2.8) # Set the project name project (sample CXX) include_directories(/usr/local/include/opencv4) # Add an executable add_executable(sample sample.cc)

sample.cc

c++

#include <opencv2/opencv.hpp> #include <iostream> int main(int argc, const char* argv[]) { cv::Mat img = cv::imread( argv[1], -1); if( img.empty() ) return -1; cv::namedWindow( "Example", cv::WINDOW_AUTOSIZE); cv::imshow( "Example !", img ); cv::waitKey(0); cv::destroyWindow("Example !!!"); return 0; }

ビルド時コマンド

bash

mkdir build && cd build cmake ../ make

エラー結果

$ make [ 50%] Linking CXX executable sample CMakeFiles/sample.dir/sample.cc.o: In function `main': sample.cc:(.text+0x75): undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' sample.cc:(.text+0x9f): undefined reference to `cv::Mat::empty() const' sample.cc:(.text+0xed): undefined reference to `cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' sample.cc:(.text+0x166): undefined reference to `cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' sample.cc:(.text+0x19d): undefined reference to `cv::waitKey(int)' sample.cc:(.text+0x1d8): undefined reference to `cv::destroyWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' sample.cc:(.text+0x207): undefined reference to `cv::Mat::~Mat()' sample.cc:(.text+0x2e8): undefined reference to `cv::Mat::~Mat()' collect2: error: ld returned 1 exit status CMakeFiles/sample.dir/build.make:94: recipe for target 'sample' failed make[2]: *** [sample] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/sample.dir/all' failed make[1]: *** [CMakeFiles/sample.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。