PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.2k stars 5.57k forks source link

Undefined symbols for architecture x86_64: #5795

Closed ckeys closed 6 years ago

ckeys commented 6 years ago

Hi All ,

我尝试用cmake在于capi的EXAMPLE 里面的 sequence.

当我用make的时候,出现了以下的问题:

Scanning dependencies of target sequence
[ 50%] Building C object CMakeFiles/sequence.dir/main.c.o
[100%] Linking C executable sequence
Undefined symbols for architecture x86_64:
  "_paddle_arguments_create_none", referenced from:
      _main in main.c.o
  "_paddle_arguments_destroy", referenced from:
      _main in main.c.o
  "_paddle_arguments_get_value", referenced from:
      _main in main.c.o
  "_paddle_arguments_resize", referenced from:
      _main in main.c.o
  "_paddle_arguments_set_ids", referenced from:
      _main in main.c.o
  "_paddle_arguments_set_sequence_start_pos", referenced from:
      _main in main.c.o
  "_paddle_gradient_machine_create_for_inference", referenced from:
      _main in main.c.o
  "_paddle_gradient_machine_destroy", referenced from:
      _main in main.c.o
  "_paddle_gradient_machine_forward", referenced from:
      _main in main.c.o
  "_paddle_gradient_machine_randomize_param", referenced from:
      _main in main.c.o
  "_paddle_init", referenced from:
      _main in main.c.o
  "_paddle_ivector_create", referenced from:
      _main in main.c.o
  "_paddle_ivector_destroy", referenced from:
      _main in main.c.o
  "_paddle_matrix_create_none", referenced from:
      _main in main.c.o
  "_paddle_matrix_destroy", referenced from:
      _main in main.c.o
  "_paddle_matrix_get_row", referenced from:
      _main in main.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [sequence] Error 1
make[1]: *** [CMakeFiles/sequence.dir/all] Error 2
make: *** [all] Error 2
NHZlX commented 6 years ago

贴一下你的cmake 编译参数

ckeys commented 6 years ago

编译环境:MacOS 10.13.1 xcode版本:9.1 cmake 版本:3.9.6 我尝试搭建IOS平台编译paddle paddle. 首先我先 首先,我先根据以下网站配置cmake, http://www.paddlepaddle.org/docs/develop/documentation/zh/mobile/cross_compiling_for_ios_cn.html 的cmake指令。然后make install 然后在cd到sequence文件夹, 用以下命令行进行cmake编译 mkdir build cd build cmake .. \ -DIOS_ARCH="x86_64"\ -DCMAKE_TOOLCHAIN_FILE=path/to/Paddle/cmake/cross_compiling/ios.cmake \ -DPADDLE_ROOT=/your/path/to/install \ -DCMAKE_BUILD_TYPE=MinSizeRel

make 然后就出现上面的错误了。

NHZlX commented 6 years ago

嗯, 那再贴一下你的交叉编译的cmake 参数

ckeys commented 6 years ago

你说的是cmake配置参数吗? cmake -DCMAKE_SYSTEM_NAME=iOS \ -DIOS_PLATFORM=SIMULATOR \ -DIOS_ARCH="x86_64" \ -DIOS_USE_VECLIB_FOR_BLAS=ON \ -DCMAKE_INSTALL_PREFIX=your/path/to/install \ -DWITH_C_API=ON \ -DWITH_TESTING=OFF \ -DWITH_SWIG_PY=OFF \

Xreki commented 6 years ago

@ckeys 你好。 capi/example里面的CMakelist.txt里面设定的是链接Paddle的动态库。但是iOS版Paddle只生成了静态库。 另外,提供一些参考链接: