2017-10-13 91 views
0

我想跨编译一个web服务器(Monkey-Server)。我的主机环境是Ubuntu 64位,目标环境是一个arm架构。所有依赖关系都可以在文件夹中找到。还有一个选项可以进行安装,但我认为在本地将其构建在主机上将文件夹转移到嵌入式系统是一个明智之举。我能够成功编译并在目标系统上运行Web服务器,但它抱怨说它无法找到配置文件。 Web服务器在主机上编译的路径中查找配置文件。如何让程序认为它是在交叉编译时使用cmake在不同目录下构建的?

例子:它试图打开,只有主机

ERROR: Cannot find/open /home/username/src/camera_root/monkey-server/conf/

上存在的文件夹,但它实际上应该在

/monkey-server/conf/

寻找配置文件这是我的工具链文件看起来像

Set(CMAKE_SYSTEM_NAME Linux) 

SET(CMAKE_C_COMPILER /home/username/src/compilerdir/arm-hisiv300-linux-uclibcgnueabi-gcc) 

#SET(CMAKE_SYSROOT /home/username/src/camera_root) 
#SET(CMAKE_FIND_ROOT_PATH /home/username/src/camera_root) 

正如你可以在我的工具链文件的底部看到我试图设置博th sysroot和find_root_path没有运气。

当我尝试SET(CMAKE_SYSROOT/home/username/src/camera_root)行时,我无法编译,因为C编译器无法编译一个简单的测试程序。

如何帮助Web服务器找到它自己的配置文件?

这里是到CMakeList.txt是什么样子,是否可以帮助一个链接: https://paste.ofcode.org/KMWyk3ZpB93LdhURZAcn2G

+0

要加载哪个配置文件不应该是您在构建时需要决定的。只要弄清楚如何在启动程序时将正确的路径作为参数传递。大多数程序都支持'--help'选项来告诉你这种使用信息。 –

+0

@JohnZwinck这就是我的想法,但服务器执行的所有I/O操作都是到主机路径。我可以例如看到日志目录的路径,在配置文件中是错误的。我担心Web服务器无法正常工作,因为很多路径不正确。 – Cortex

+0

通常针对非主机目标的交叉编译包括**安装**与适用于**目标**机器的* CMAKE_INSTALL_PREFIX *。但是在主机上的'make install'被'make DISTDIR = <...> install'或甚至'cpack'的用法所取代。这适用于在* CMAKE_INSTALL_PREFIX *目录中自行调整的项目。但是,您的项目似乎会根据源代码和编译目录进行调整(我在其中看不到* CMAKE_INSTALL_PREFIX *用法)。 – Tsyvarev

回答

0

这是一个老问题和OP可能已经移动了现在,但对于其他人同样的问题, Monkey有一个--configdir和一个--configserver开关来设置配置文件的位置,作为解决这个问题的一种解决方法。

相关问题