如何正确使用Dockcross进行交叉编译?

时间:2018-09-14 07:08:51

标签: c++11 docker cmake compilation cross-compiling

某些背景

我正在尝试交叉编译RaspberryPi 3B的应用程序。我已经安装了dockcross,如下所示:

docker run --rm dockcross/linux-armv6 > ./dockcross
chmod +x ./dockcross
mv ./dockcross ~/bin/

在主机macOS high sierra上,我可以毫无问题地进行编译和链接。

问题

首先,我运行:dockcross cmake -Bbuild -H.。在运行dockcross make之后,编译器自然会给出错误:<some-lib/some-lib.h> not found

此后,我通过dockcross bash访问了容器bash,并将所有缺少的库及其标头安装到了容器中。不幸的是,错误是相同的,编译器无法找到标头。我的CMakeLists.txt的内容:

cmake_minimum_required (VERSION 3.0)
project (myLibProject)

include_directories(
    .
    /usr/include
)

link_directories(
    /usr/lib
)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

file(GLOB SOURCES
    "include/*.h"
    "src/*.cpp"
)

add_library(myLibProject ${SOURCES})

target_link_libraries(myLibProject some-lib)

空运行make-make -n-我看不到当前文件夹以外的文件夹的include指令-.-文件夹:

/usr/bin/arm-linux-gnueabihf-g++   -I/work/.  -std=c++11   -o CMakeFiles/myLibProject.dir/src/src1.cpp.o -c /work/src/src1.cpp

如果我通过添加-I/usr/include手动运行以上命令,则编译器将成功编译src1.cpp.o

问题

  1. 为什么CMake尚未选择其他目录?它们存在于容器linux中。

  2. 我的项目有很多依赖性,例如boost。我应该如何修改CMakeLists.txt以使用Dockcross正确编译项目?

0 个答案:

没有答案