C++ macosc++;链接OpenCV和libtiff
我最近编写了一个代码来加载TIFF图像(使用libtiff)并用opencv显示它(我知道opencv可以读取TIFF,但我需要读取它以获得更低级别的控制) 当我使用libtiff阅读TIFF并编译它时。没关系。编译命令如下所示:C++ macosc++;链接OpenCV和libtiff,c++,macos,opencv,compilation,C++,Macos,Opencv,Compilation,我最近编写了一个代码来加载TIFF图像(使用libtiff)并用opencv显示它(我知道opencv可以读取TIFF,但我需要读取它以获得更低级别的控制) 当我使用libtiff阅读TIFF并编译它时。没关系。编译命令如下所示: g++ -L /usr/local/lib/ -I /usr/local/include/ -ltiff libtiff_test.cpp -o libtiff_test g++ -L /usr/local/lib/ -I /usr/local/include/ -
g++ -L /usr/local/lib/ -I /usr/local/include/ -ltiff libtiff_test.cpp -o libtiff_test
g++ -L /usr/local/lib/ -I /usr/local/include/ -ltiff -lopencv_core -lopencv_highgui -lopencv_imgcodecs libtiff_test.cpp -o libtiff_test
但是,当我将它们(OpenCV和Libtiff)放在一起时,问题就出现了。编译命令如下所示:
g++ -L /usr/local/lib/ -I /usr/local/include/ -ltiff libtiff_test.cpp -o libtiff_test
g++ -L /usr/local/lib/ -I /usr/local/include/ -ltiff -lopencv_core -lopencv_highgui -lopencv_imgcodecs libtiff_test.cpp -o libtiff_test
编译器报告:架构x86_64的未定义符号
The detailed information is as below(longer):
Undefined symbols for architecture x86_64:
"ThermalImage::grfmt_tiff_err_handler_init", referenced from:
ThermalImage::ThermalImage(char*) in ThermalImage-6b82a6.o
"_cblas_cgemm", referenced from:
lapack_gemm32fc(float const*, unsigned long, float const*, unsigned long, float, float const*, unsigned long, float, float*, unsigned long, int, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
lapack_gemm64fc(double const*, unsigned long, double const*, unsigned long, double, double const*, unsigned long, double, double*, unsigned long, int, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
"_cblas_dgemm", referenced from:
lapack_gemm64f(double const*, unsigned long, double const*, unsigned long, double, double const*, unsigned long, double, double*, unsigned long, int, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
"_cblas_sgemm", referenced from:
lapack_gemm32f(float const*, unsigned long, float const*, unsigned long, float, float const*, unsigned long, float, float*, unsigned long, int, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
lapack_gemm64f(double const*, unsigned long, double const*, unsigned long, double, double const*, unsigned long, double, double*, unsigned long, int, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
"_cblas_zgemm", referenced from:
lapack_gemm64fc(double const*, unsigned long, double const*, unsigned long, double, double const*, unsigned long, double, double*, unsigned long, int, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
"_clBuildProgram", referenced from:
cv::ocl::Program::Impl::Impl(cv::ocl::ProgramSource const&, cv::String const&, cv::String&) in libopencv_core.a(ocl.cpp.o)
"_clCreateBuffer", referenced from:
cv::ocl::OpenCLAllocator::allocate(cv::UMatData*, int, cv::UMatUsageFlags) const in libopencv_core.a(ocl.cpp.o)
cv::ocl::OpenCLBufferPoolImpl::_allocateBufferEntry(cv::ocl::CLBufferEntry&, unsigned long) in libopencv_core.a(ocl.cpp.o)
cv::ocl::Image2D::Impl::init(cv::UMat const&, bool, bool) in libopencv_core.a(ocl.cpp.o)
"_clCreateCommandQueue", referenced from:
cv::ocl::Queue::Impl::Impl(cv::ocl::Context const&, cv::ocl::Device const&) in libopencv_core.a(ocl.cpp.o)
"_clCreateContext", referenced from:
cv::ocl::Context::Impl::setDefault() in libopencv_core.a(ocl.cpp.o)
cv::ocl::Context::Impl::Impl(int) in libopencv_core.a(ocl.cpp.o)
"_clCreateImage", referenced from:
cv::ocl::Image2D::Impl::init(cv::UMat const&, bool, bool) in libopencv_core.a(ocl.cpp.o)
"_clCreateImage2D", referenced from:
cv::ocl::Image2D::Impl::init(cv::UMat const&, bool, bool) in libopencv_core.a(ocl.cpp.o)
"_clCreateKernel", referenced from:
cv::ocl::Kernel::Impl::Impl(char const*, cv::ocl::Program const&) in libopencv_core.a(ocl.cpp.o)
"_clCreateProgramWithBinary", referenced from:
cv::ocl::Program::Impl::Impl(cv::String const&, cv::String const&) in libopencv_core.a(ocl.cpp.o)
"_clCreateProgramWithSource", referenced from:
cv::ocl::Program::Impl::Impl(cv::ocl::ProgramSource const&, cv::String const&, cv::String&) in libopencv_core.a(ocl.cpp.o)
"_clEnqueueCopyBuffer", referenced from:
cv::ocl::OpenCLAllocator::copy(cv::UMatData*, cv::UMatData*, int, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*, bool) const in libopencv_core.a(ocl.cpp.o)
"_clEnqueueCopyBufferRect", referenced from:
cv::ocl::OpenCLAllocator::copy(cv::UMatData*, cv::UMatData*, int, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*, bool) const in libopencv_core.a(ocl.cpp.o)
cv::ocl::Image2D::Impl::init(cv::UMat const&, bool, bool) in libopencv_core.a(ocl.cpp.o)
"_clEnqueueCopyBufferToImage", referenced from:
cv::ocl::Image2D::Impl::init(cv::UMat const&, bool, bool) in libopencv_core.a(ocl.cpp.o)
"_clEnqueueCopyImageToBuffer", referenced from:
cv::ocl::convertFromImage(void*, cv::UMat&) in libopencv_core.a(ocl.cpp.o)
"_clEnqueueMapBuffer", referenced from:
cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const in libopencv_core.a(ocl.cpp.o)
cv::ocl::OpenCLAllocator::map(cv::UMatData*, int) const in libopencv_core.a(ocl.cpp.o)
"_clEnqueueNDRangeKernel", referenced from:
cv::ocl::Kernel::run(int, unsigned long*, unsigned long*, bool, cv::ocl::Queue const&) in libopencv_core.a(ocl.cpp.o)
"_clEnqueueReadBuffer", referenced from:
cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const in libopencv_core.a(ocl.cpp.o)
cv::ocl::OpenCLAllocator::map(cv::UMatData*, int) const in libopencv_core.a(ocl.cpp.o)
cv::ocl::OpenCLAllocator::download(cv::UMatData*, void*, int, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*) const in libopencv_core.a(ocl.cpp.o)
"_clEnqueueReadBufferRect", referenced from:
cv::ocl::OpenCLAllocator::download(cv::UMatData*, void*, int, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*) const in libopencv_core.a(ocl.cpp.o)
"_clEnqueueTask", referenced from:
cv::ocl::Kernel::runTask(bool, cv::ocl::Queue const&) in libopencv_core.a(ocl.cpp.o)
"_clEnqueueUnmapMemObject", referenced from:
cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*) const in libopencv_core.a(ocl.cpp.o)
cv::ocl::OpenCLAllocator::unmap(cv::UMatData*) const in libopencv_core.a(ocl.cpp.o)
"_clEnqueueWriteBuffer", referenced from:
cv::ocl::OpenCLAllocator::unmap(cv::UMatData*) const in libopencv_core.a(ocl.cpp.o)
cv::ocl::OpenCLAllocator::upload(cv::UMatData*, void const*, int, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*) const in libopencv_core.a(ocl.cpp.o)
"_clEnqueueWriteBufferRect", referenced from:
cv::ocl::OpenCLAllocator::upload(cv::UMatData*, void const*, int, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long const*) const in libopencv_core.a(ocl.cpp.o)
"_clFinish", referenced from:
cv::ocl::Queue::finish() in libopencv_core.a(ocl.cpp.o)
cv::ocl::attachContext(cv::String const&, void*, void*, void*) in libopencv_core.a(ocl.cpp.o)
cv::ocl::Queue::operator=(cv::ocl::Queue const&) in libopencv_core.a(ocl.cpp.o)
cv::ocl::Queue::~Queue() in libopencv_core.a(ocl.cpp.o)
cv::ocl::Queue::create(cv::ocl::Context const&, cv::ocl::Device const&) in libopencv_core.a(ocl.cpp.o)
cv::ocl::Queue::~Queue() in libopencv_core.a(ocl.cpp.o)
cv::ocl::Kernel::run(int, unsigned long*, unsigned long*, bool, cv::ocl::Queue const&) in libopencv_core.a(ocl.cpp.o)
...
"_clFlush", referenced from:
cv::ocl::Image2D::Impl::init(cv::UMat const&, bool, bool) in libopencv_core.a(ocl.cpp.o)
"_clGetDeviceIDs", referenced from:
cv::ocl::Context::Impl::setDefault() in
...
"_ippicvsFlip_64f_I", referenced from:
void cv::sort_<unsigned char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<signed char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<unsigned short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<int>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<float>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<double>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
...
"_ippicvsFlip_8u_I", referenced from:
void cv::sort_<unsigned char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<signed char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<unsigned short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<int>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<float>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<double>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
...
"_ippicvsMaxEvery_16u", referenced from:
cv::hal::max16u(unsigned short const*, unsigned long, unsigned short const*, unsigned long, unsigned short*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsMaxEvery_32f", referenced from:
cv::hal::max32f(float const*, unsigned long, float const*, unsigned long, float*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsMaxEvery_64f", referenced from:
cv::hal::max64f(double const*, unsigned long, double const*, unsigned long, double*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsMaxEvery_8u", referenced from:
cv::hal::max8u(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsMinEvery_16u", referenced from:
cv::hal::min16u(unsigned short const*, unsigned long, unsigned short const*, unsigned long, unsigned short*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsMinEvery_32f", referenced from:
cv::hal::min32f(float const*, unsigned long, float const*, unsigned long, float*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsMinEvery_64f", referenced from:
cv::hal::min64f(double const*, unsigned long, double const*, unsigned long, double*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsMinEvery_8u", referenced from:
cv::hal::min8u(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, int, int, void*) in libopencv_core.a(arithm.cpp.o)
"_ippicvsSortAscend_8u_I", referenced from:
void cv::sort_<unsigned char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<signed char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<unsigned short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<int>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<float>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<double>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
...
"_ippicvsSortDescend_8u_I", referenced from:
void cv::sort_<unsigned char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<signed char>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<unsigned short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<short>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<int>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<float>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
void cv::sort_<double>(cv::Mat const&, cv::Mat&, int) in libopencv_core.a(matrix.cpp.o)
...
"_sgels_", referenced from:
lapack_QR32f(float*, unsigned long, int, int, int, float*, unsigned long, float*, int*) in libopencv_core.a(hal_internal.cpp.o)
lapack_QR64f(double*, unsigned long, int, int, int, double*, unsigned long, double*, int*) in libopencv_core.a(hal_internal.cpp.o)
"_sgeqrf_", referenced from:
lapack_QR32f(float*, unsigned long, int, int, int, float*, unsigned long, float*, int*) in libopencv_core.a(hal_internal.cpp.o)
lapack_QR64f(double*, unsigned long, int, int, int, double*, unsigned long, double*, int*) in libopencv_core.a(hal_internal.cpp.o)
"_sgesdd_", referenced from:
lapack_SVD32f(float*, unsigned long, float*, float*, unsigned long, float*, unsigned long, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
lapack_SVD64f(double*, unsigned long, double*, double*, unsigned long, double*, unsigned long, int, int, int) in libopencv_core.a(hal_internal.cpp.o)
"_sgesv_", referenced from:
lapack_LU32f(float*, unsigned long, int, float*, unsigned long, int, int*) in libopencv_core.a(hal_internal.cpp.o)
lapack_LU64f(double*, unsigned long, int, double*, unsigned long, int, int*) in libopencv_core.a(hal_internal.cpp.o)
"_sgetrf_", referenced from:
lapack_LU32f(float*, unsigned long, int, float*, unsigned long, int, int*) in libopencv_core.a(hal_internal.cpp.o)
lapack_LU64f(double*, unsigned long, int, double*, unsigned long, int, int*) in libopencv_core.a(hal_internal.cpp.o)
"_sposv_", referenced from:
lapack_Cholesky32f(float*, unsigned long, int, float*, unsigned long, int, bool*) in libopencv_core.a(hal_internal.cpp.o)
lapack_Cholesky64f(double*, unsigned long, int, double*, unsigned long, int, bool*) in libopencv_core.a(hal_internal.cpp.o)
"_spotrf_", referenced from:
lapack_Cholesky32f(float*, unsigned long, int, float*, unsigned long, int, bool*) in libopencv_core.a(hal_internal.cpp.o)
lapack_Cholesky64f(double*, unsigned long, int, double*, unsigned long, int, bool*) in libopencv_core.a(hal_internal.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
详细信息如下(更长):
架构x86_64的未定义符号:
“ThermalImage::grfmt_tiff_err_handler_init”,引用自:
ThermalImage::ThermalImage-6b82a6.o中的ThermalImage(char*)
“\u cblas\u cgemm”,引用自:
libopencv_core.a(hal_internal.cpp.o)中的lapack_gemm32fc(float const*,unsigned long,float const*,unsigned long,float const*,unsigned long,float const*,unsigned long,float const*,unsigned long,int,int,int,int)
libopencv_core.a(hal_internal.cpp.o)中的lapack_gemm64fc(双常量*、无符号长、双常量*、无符号长、双常量*、无符号长、双常量长、双常量长、双常量长、双常量长、无符号长、整数、整数、整数)
“_cblas_dgemm”,引用自:
libopencv_core.a(hal_internal.cpp.o)中的lapack_gemm64f(双常量*、无符号长、双常量*、无符号长、双常量*、无符号长、双常量长、双常量长、双常量长、双常量长、无符号长、整数、整数、整数)
“\u cblas\u sgemm”,引用自:
libopencv_core.a(hal_internal.cpp.o)中的lapack_gemm32f
libopencv_core.a(hal_internal.cpp.o)中的lapack_gemm64f(双常量*、无符号长、双常量*、无符号长、双常量*、无符号长、双常量长、双常量长、双常量长、双常量长、无符号长、整数、整数、整数)
“_cblas_zgemm”,引用自:
libopencv_core.a(hal_internal.cpp.o)中的lapack_gemm64fc(双常量*、无符号长、双常量*、无符号长、双常量*、无符号长、双常量长、双常量长、双常量长、双常量长、无符号长、整数、整数、整数)
“\u clBuildProgram”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Program::Impl::Impl(cv::ocl::ProgramSource const&,cv::String const&,cv::String&)
“\u clCreateBuffer”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::OpenCLAllocator::allocate(cv::UMatData*,int,cv::UMatUsageFlags)常量
cv::ocl::OpenCLBufferPoolImpl::_libopencv_core.a(ocl.cpp.o)中的allocateBufferEntry(cv::ocl::CLBufferEntry&,unsigned long)
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Image2D::Impl::init(cv::UMat const&,bool,bool)
“clCreateCommandQueue”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Queue::Impl::Impl(cv::ocl::Context const&,cv::ocl::Device const&)
“\u clCreateContext”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Context::Impl::setDefault()
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Context::Impl::Impl(int)
“\u clCreateImage”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Image2D::Impl::init(cv::UMat const&,bool,bool)
“_clCreateImage2D”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Image2D::Impl::init(cv::UMat const&,bool,bool)
“\u clCreateKernel”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Kernel::Impl::Impl(char const*,cv::ocl::Program const&)
“\u clCreateProgramWithBinary”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Program::Impl::Impl(cv::String const&,cv::String const&)
“clCreateProgramWithSource”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Program::Impl::Impl(cv::ocl::ProgramSource const&,cv::String const&,cv::String&)
“\u clEnqueueCopyBuffer”,引用自:
在libopencv_core.a(ocl.cpp.o)中复制(cv::UMatData*,cv::UMatData*,int,无符号长常量*,无符号长常量*,无符号长常量*,无符号长常量*,bool)常量
“_clEnqueueCopyBufferRect”,引用自:
在libopencv_core.a(ocl.cpp.o)中复制(cv::UMatData*,cv::UMatData*,int,无符号长常量*,无符号长常量*,无符号长常量*,无符号长常量*,bool)常量
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Image2D::Impl::init(cv::UMat const&,bool,bool)
“\u clEnqueueCopyBufferToImage”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Image2D::Impl::init(cv::UMat const&,bool,bool)
“_clEnqueueCopyImageToBuffer”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::convertFromImage(void*,cv::UMat&)
“_clenqueemapbuffer”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*)常量
libopencv_core.a(ocl.cpp.o)中的cv::ocl::OpenCLAllocator::map(cv::UMatData*,int)常量
“_ClenqueEndRangeKernel”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Kernel::run(int、unsigned long*、unsigned long*、bool、cv::ocl::Queue const&)
“_clenqueureadbuffer”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*)常量
libopencv_core.a(ocl.cpp.o)中的cv::ocl::OpenCLAllocator::map(cv::UMatData*,int)常量
在libopencv_core.a(ocl.cpp.o)中下载(cv::UMatData*,void*,int,unsigned long const*,unsigned long const*,unsigned long const*,unsigned long const*,unsigned long const*)常量
“_ClenqueureAdBufferRect”,引用自:
在libopencv_core.a(ocl.cpp.o)中下载(cv::UMatData*,void*,int,unsigned long const*,unsigned long const*,unsigned long const*,unsigned long const*,unsigned long const*)常量
“_clenqueetask”,引用自:
libopencv_core.a(ocl.cpp.o)中的cv::ocl::Kernel::runTask(bool,cv::ocl::Queue const&)
“\u clenqueunmapmemobject”,引用自:
libopencv_core.a(ocl)中的cv::ocl::OpenCLAllocator::deallocate(cv::UMatData*)常量
g++ ... $(pkg-config --libs --cflags opencv) ...
pkg-config --libs --cflags opencv3
find . -name \*.pc
pkg-config --libs --cflags $(find . -name \*.pc)
pkg-config --list-all | grep -i tif
libtiff-4 libtiff - Tag Image File Format (TIFF) library.
pkg-config --libs --cflags libtiff-4
-I/usr/local/Cellar/libtiff/4.0.8/include \
-L/usr/local/Cellar/libtiff/4.0.8/lib -ltiff