magick++不能连接OS Yosemite
Magick++ not linking OS Yosemite
这个问题已经问过了:magick++在OS X 10.8中不能链接没有分辨率
这也是我之前问过的两个问题的后续问题,试图让c++图像拼接算法正常工作(第二个问题是不必要的,我应该发现这个问题,但是,为了清楚起见)。使用MTL/Boost库Mac终端c++:: "无此指令"在osx-yosemite上使用gcc-4.9时出错
我的问题是我不能正确地链接imagemagick到我的gcc-4.9编译,如下所示:
$ make
Linking ...
Undefined symbols for architecture x86_64:
"Magick::Image::write(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
FileRender::finish() in main.o
"Magick::Image::Image(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
planet(char const*) in main.o
work(int, char**) in main.o
test_transform(char const*, char const*) in main.o
test_warp(int, char**) in main.o
gallery(char const*, char const*) in main.o
test_extrema(char const*) in main.o
test_feature(char const*, int) in main.o
...
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [image-stitching] Error 1
我尝试了魔法页面上的建议,这里列出的架构x86_64的未定义符号,以及相当多的其他。但是,唉,运气不好。
按要求,制作文件(从我的第一个链接的原始项目,与当前编辑)。
# $File: Makefile
# $Date: Wed Jun 17 20:52:38 2015 +0800
OBJ_DIR = obj
TARGET = image-stitching
INCLUDE_DIR = -Iinclude -I/usr/local/include
DEFINES = -DDEBUG
OPTFLAGS = -O3 -Wall -Wextra
LIBS =
#INCLUDE_DIR += $(shell pkg-config --cflags $(LIBS))
CXXFLAGS = $(INCLUDE_DIR) -fopenmp
CXXFLAGS += $(DEFINES) -std=c++11 $(OPTFLAGS)
CXXFLAGS += $(shell Magick++-config --cxxflags)
LDFLAGS = -fopenmp $(OPTFLAGS)
#LDFLAGS += $(shell pkg-config $(LIBS) --libs)
LDFLAGS += $(shell Magick++-config --ldflags --libs)
LDFLAGS += -L/usr/local/Cellar/libpng/1.6.18/lib
#LDFLAGS += -lImageMagick
CC = g++-4.9
SHELL = bash
ccSOURCES = $(shell find -name "*.cc" | sed 's/^.///g')
OBJS = $(addprefix $(OBJ_DIR)/,$(ccSOURCES:.cc=.o))
DEPFILES = $(OBJS:.o=.d)
.PHONY: all clean run
all: $(TARGET)
ifneq ($(MAKECMDGOALS), clean)
sinclude $(DEPFILES)
endif
$(OBJ_DIR)/%.o: %.cc
@echo "[cc] $< ..."
@$(CC) -c $< -o $@ $(CXXFLAGS)
$(OBJ_DIR)/%.d: %.cc Makefile
@mkdir -p $(dir $@)
@echo "[dep] $< ..."
@$(CC) $(CXXFLAGS) $(DEFINES) -MM -MT "$(OBJ_DIR)/$(<:.cc=.o) $(OBJ_DIR)/$(<:.cc=.d)" "$<" > "$@"
$(TARGET): $(OBJS)
@echo "Linking ..."
@$(CC) $(OBJS) -o $@ $(LDFLAGS)
@echo "done."
clean:
@rm -rvf $(OBJ_DIR)
run: $(TARGET)
./$(TARGET) lenna.png lenna_r.png
通常,我需要非常具体地说明clang++,以及使用哪个标准库。
# Switch GCC for clang
CC=clang
# Switch g++ for clang++
CXXS=clang++
# Ensure stdlib is defined
CXXFLAGS += $(DEFINES) -std=gnu++11 -stdlib=libstdc++ $(OPTFLAGS)
如果您计划移植到ImagickMagick 7,请将-Wno-deprecated-register
添加到OPTFLAGS
要进行测试,请执行以下命令…
// link_to_lib.cc
#include <iostream>
#include <Magick++.h>
using namespace std;
using namespace Magick;
int main(int argc, const char ** argv) {
InitializeMagick(*argv);
Image img("rose:");
Geometry size = img.size();
cout << size.width() << "x" << size.height() << endl;
return 0;
}
并编译&与…
clang++ -std=c++11 -stdlib=libstdc++
`Magick++-config --cxxflags`
`Magick++-config --libs`
link_to_lib.cc -o link_to_lib
相关文章:
- "ostream &os"有什么用?
- libprotobuf 检查在 Mac OS 上执行程序时失败
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 在 c++ 中检查 Windows OS 服务器版本
- OS X: ld: 找不到 -lstdc++ 的库
- Python os.system() 返回错误值
- Mac os x app bundle 在下载并运行时崩溃,但在终端或更改 Info.plist 时运行良好
- Mac Os Yosemite上的FTDI芯片ID
- 如何安装Eclipse for C++for OS X Yosemite
- 如何在OS X Yosemite上安装FreeGlut(3.0.0或2.8.0)
- 在OS X Yosemite上使用gcc编译器编译OpenMP程序
- QWidget不会在OS X(Yosemite)上以全屏模式关闭
- Qt错误:在Mac OS X Yosemite上找不到体系结构x86_64的符号
- OS X Yosemite升级:游戏中心无法识别游戏
- 编译过程中无法从加速框架中链接BLAS -OS Yosemite 10.0.5
- 尝试调试c++程序在Eclipse Mars上的MAC Pro视网膜与OS X Yosemite版本10.10.5
- magick++不能连接OS Yosemite
- Mac OS X 10.10 yosemite 上的 Dionysus Build/make 出现问题