私はコマンドラインでaとideを使わずにコンパイルする方法を理解しようとしています。これはコマンドラインを使ってプロジェクトをビルドした初めてのことです。そして、シンプルなプロジェクトに依存関係をリンクすることに苦しんでいます。Mac OS Xのコマンドラインでdylibと実行可能ファイルをリンクするにはどうしたらいいですか?
私はこの木の構造を有する:
.
├── include
...
...
├── lib
│ ├── libopencv_calib3d.3.3.1.dylib
│ ├── libopencv_core.3.3.1.dylib
│ ├── libopencv_cudev.3.3.1.dylib
│ ├── libopencv_features2d.3.3.1.dylib
│ ├── libopencv_flann.3.3.1.dylib
│ ├── libopencv_highgui.3.3.1.dylib
│ ├── libopencv_imgcodecs.3.3.1.dylib
│ ├── libopencv_imgproc.3.3.1.dylib
│ ├── libopencv_videoio.3.3.1.dylib
│ ├── libopencv_ximgproc.3.3.1\ 2.dylib
│ └── libopencv_ximgproc.3.3.1.dylib
├── resources
│ ├── giraffe.jpg
│ ├── golden-retriver-puppy.jpg
│ ├── kangaroo.jpg
│ └── kitty.jpeg
└── sources
└── main.cpp
と私がメインでこのコードを持っている:
#include "opencv2/ximgproc/segmentation.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <ctime>
static void help() {
std::cout << std::endl <<
"Usage:" << std::endl <<
"./ssearch input_image (f|q)" << std::endl <<
"f=fast, q=quality" << std::endl <<
"Use l to display less rects, m to display more rects, q to quit" << std::endl;
}
int main(int argc, char** argv) {
std::cout << "Test" << std::endl;
// If image path and f/q is not passed as command
// line arguments, quit and display help message
if (argc < 3) {
help();
return -1;
}
return 0;
}
をし、どこでもMy Macターミナルで私は、このコマンドを使って構築された:
clang++ sources/main.cpp -o a -I./include -L./lib -lopencv_core.3.3.1 -lopencv_ximgproc.3.3.1 -lopencv_highgui.3.3.1 -lopencv_imgproc.3.3.1 -lopencv_imgcodecs.3.3.1
これは私に何かエラーを与えません。
が、私は、私は次のエラーを取得~$ ./a
を実行すると:
dyld: Library not loaded: @rpath/libopencv_core.3.3.dylib
Referenced from:
/Users/lgdelacruz/Documents/GSoC/project/objectdetection/./a
Reason: image not found
Abort trap: 6
を私は日のためにこれらをいじってきた、と私はそれを把握するように見えることはできません。実行可能ファイルは、それらの定義が必要なときにリンクするものをどのように見つけるか?