`
purpen
  • 浏览: 799663 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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);
  
});
分享到:
评论

相关推荐

    ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1

    今天编写一个简单的代码,报错了: ... for (uint32_t i = 0; i < SIZE; ++i) { _data[i] = new T[SIZE]; } } inline const uint32_t size() const { return SIZE; } T* operator[](uint32_

    Framework not found IOSurface for architecture arm64(不能设为免费?)

    在iOS应用开发中,"Framework not found IOSurface for architecture arm64" 是一个常见的构建错误,这通常发生在尝试编译或运行项目时,系统无法找到指定的架构(arm64)所需的IOSurface框架。该问题可能由多种原因...

    在Mac OS上自行编译安装Apache服务器和PHP解释器

    注意,如果你在编译过程中遇到“Undefined symbols for architecture x86_64”的错误,这通常意味着缺少某些库。在这种情况下,你需要找到相应的库并安装,或者查阅错误信息以获取解决方案。 整个编译过程可能需要...

    aestest.zip

    C++ AES加密解密简单实现,可以运行,源码附上,可能部分编译器不能编译,出现ld: symbol(s) not found for architecture x86_64 类似错误,是编译器问题,如果有疑问,可加

    找不到架构x86_64的符号

    标题“找不到架构x86_64的符号”所描述的问题是,在编译或运行C++程序时,遇到一个...而"symbol-s-not-found-for-architecture-x.pdf"这个文件很可能是对这个问题的进一步技术文档,包含了详细的排查步骤和解决方案。

    ExtensionProtocolforStruct

    编译 ExtensionProtocolforStruct 项目时,链接器崩溃并显示以下错误...ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 设置是:

    Bochs - The cross platform IA-32 (x86) emulator

    - Bochs now can be compiled as native Windows x86-64 application (tested with Mingw gcc 4.5.1 and Microsoft Visual Studio Express 2010) - Added ability to configure CPUID stepping through .bochsrc....

    使用 FFmpeg 命令拼接mp3音频文件异常问题及解决方法

    在某些情况下,如 Mac 系统,可能会遇到 "ld: symbol(s) not found for architecture x86_64" 的错误。为解决这个问题,需要编辑 libmp3lame 目录下的 `libmp3lame.sym` 文件,删除其中的 `lame_init_old` 项。 5. ...

Global site tag (gtag.js) - Google Analytics