需要在Axis相机上运行Azure IoT SDK C示例。使用标准cmake构建样本不起作用,因为它们是针对64位x86_84编译的。需要将其编译为MIPS32。
Eugene Sh。建议为它制作一个工具链文件。我现在写了一个,但它失败了16%,出现以下错误:[ 16%] /usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/cmake)
Building C object c-utility/CMakeFiles/aziotsharedutil.dir/adapters/uniqueid_linux.c.o
/demo/azure-iot-sdk-c/c-utility/adapters/uniqueid_linux.c:7:23: fatal error: uuid/uuid.h: No such file or directory
compilation terminated.
make[2]: *** [c-utility/CMakeFiles/aziotsharedutil.dir/adapters/uniqueid_linux.c.o] Error 1
make[1]: *** [c-utility/CMakeFiles/aziotsharedutil.dir/all] Error 2
make: *** [all] Error 2
我的工具链文件:
INCLUDE(CMakeForceCompiler)
SET(CMAKE_SYSTEM_NAME Linux) # this one is important
SET(CMAKE_SYSTEM_VERSION 1) # this one not so much
SET(CMAKE_SYSTEM_PROCESSOR mips)
# this is the location of the imps toolchain targeting the M1125
SET(CMAKE_C_COMPILER /usr/local/mipsisa32r2el/r23/bin/mipsisa32r2el-axis-linux-gnu-gcc)
# this is the file system root of the target
#SET(CMAKE_FIND_ROOT_PATH /usr/local/mipsisa32r2el/r23)
# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
使用'./ build.sh --toolchain-file toolchain-mips.cmake`运行它。
如果我按documentation说的那样运行它,使用-cl --sysroot = / usr / local / mipsisa32r2el / r23。我得到错误,它无法找到OpenSSL并且更早失败。
答案 0 :(得分:0)
弄清楚它的一部分。它找不到OpenSSL,因为它不在指定的根文件夹中。很明显,真的。需要使用mips gcc克隆源和构建并提供其根目录的路径。
SET(CMAKE_FIND_ROOT_PATH /path/to/mips/openssl /usr/local/mipsisa32r2el/r23)
然后对于Curl来说同样的事情。
SET(CMAKE_FIND_ROOT_PATH /path/to/mips/openssl /path/to/mips/curl /usr/local/mipsisa32r2el/r23)
现在我回到了我开始的地方。丢失头文件,我并不完全放在我应该放置的位置。但是,一个新问题是,当使用--sysroot=/usr/local/mipsisa32r2el/r23
后缀运行构建脚本时,它在0%时失败,并引用警告被视为错误。考虑到没有后缀不会发生这种情况,我只能假设它与提供的mips相关文件而不是CMake文件有关。
编辑:管理修复它并使用工具链成功构建。
跳过sysroot
参数。解决了有关uuid
缺少头文件的错误。
在22%时出现以下错误,即discussed and solved here.。简短的回答,仅使用util-linux构建的uuid。
最后,我能够通过Cmake为我的MIPS-32设备构建。