构建makefile / deploy的linux方式 - 开发?

时间:2011-11-09 14:55:11

标签: c linux

我有一个问题:许多存储库不包含其中包含调试符号的库。所以这意味着我必须自己安装它们,并且通常它们安装在不同于我从我的发行版中获得的库的目录中。 显然(?)我想用剥离的优化库运行我的实际应用程序,但是现在我的makefile被编写,所以它们使用自定义编译库(包括dbg符号)...例如:

-I / usr / local / include /现在正确的路径,但在部署时我想我需要-I / usr / include / whatever

这只是一个简单的示例,但它显示了我的开发计算机和部署计算机上的所有内容是如何不同的。当然,人们必须提出一些解决方案来解决这个问题吗?你能帮我吗? (除了显而易见的事情,比如写入makefile,那是丑陋和错误的)

我只是不明白任何人都可以像这样工作。唯一的解决方案是自己编译所有东西..?

2 个答案:

答案 0 :(得分:3)

调试版本或发布版本通常不在Makefile中决定,而是由configure脚本决定。也就是说,你有一个源代码树和两个构建版本,一个使用你的库的调试标志(-O0,-ggdb)构建调试版本(通过-I,-L,可能设置rpath)和另一个版本使用生产标志和正常环境进行生产构建。

典型设置如下:

svn co my_source_url source
mkdir debug production
( cd debug && ../source/configure DEBUG_OPTIONS; )
( cd production && ../source/configure PRODUCTION_OPTIONS; )

答案 1 :(得分:2)

如果您的客户进行编译..您需要pkg-config

如果您的客户只执行.. 你有一个启动程序shell脚本,它正确设置LD_LIBRARY_PATH并执行二进制文件。