ld: symbol(s) not found for architecture x86_64

GraphicsMagic 有一个Nodejs的客户端:

https://github.com/aheckmann/gm

简直就是nodejs处理图片的神器呀!

但是使用它之前必须得安装GraphicsMagic,于是开始了痛苦的折腾之旅.

开源系统或者组件就是这样,编译安装一个东西,同时又依赖别的组件,又要编译、安装... 真的很蛋疼...

GraphicsMagic根据使用功能的不同,依赖不同的组件,我需要的只是对jpeg和png进行简单的图片处理(缩放、裁剪啊什么的,不过它的功能可以更加强大),主要依赖了两个组件:

libjpeg-6b.tar.gz

libpng-1.4.7.tar.gz

首先必须先下载以上的两个组件,然后解压,然后./confiure 然后sudo make&make install

接着就可以安装GraphicsMagic了:

这里选择你需要的版本并下载。然后解压。在解压的目录里运行:

./configure CC=clang
     
make
     
sudo make install

 

注意confiure命令后面的CC=clang。它指定了编译器为Mac下推荐使用的clang。如果没有这个参数,Makefile将会使用系统默认的编译器进行编译,而这个编译器不是GraphicsMagic所推荐的,并且在make的过程中会出现以下错误:

Undefined symbols for architecture x86_64:
   
  "___builtin_object_size", referenced from:
   
      _BlurImageScanlines.omp_fn.6 in libGraphicsMagick.a(magick_libGraphicsMagick_la-effect.o)
   
      _XShearImage.omp_fn.0 in libGraphicsMagick.a(magick_libGraphicsMagick_la-shear.o)
   
      _YShearImage.omp_fn.1 in libGraphicsMagick.a(magick_libGraphicsMagick_la-shear.o)
   
ld: symbol(s) not found for architecture x86_64
   
collect2: ld returned 1 exit status
   
make[1]: *** [utilities/gm] Error 1
   
make: *** [all] Error 2

 

 

切记要在confiure的时候./configure CC=clang 呀,这个是哥血泪摸索出来的经验,希望奉献出来让大家少走弯路。

好,npm install gm

然后写一段nodejs的代码测试一下:

var gm = require('gm');
  
gm('./test.jpg')
  
.size(function(err, image){
  
    console.log(image.width, image.height);
  
});

猜你喜欢

转载自purpen.iteye.com/blog/1826065
今日推荐