首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dpkg构建标志构建一个简单的程序。

使用dpkg构建标志构建一个简单的程序。
EN

Stack Overflow用户
提问于 2014-01-23 20:04:19
回答 1查看 395关注 0票数 1

我正在尝试构建一个非常简单的C程序,以便包含到一个.deb包中。该项目的大部分内容是Python。当这个程序包含在一个.deb包中时,lintian会给我hardening-no-fortify-functions警告。

在进一步阅读时,Debian似乎希望您在构建C程序时包含某些标志,并且可以使用dpkg-buildflags --get CFLAGS检索这些标志。

我的初始构建标志如下所示:

代码语言:javascript
复制
gcc -Wall -pedantic -o somefile somefile.c

现在,我在和

代码语言:javascript
复制
CFLAGS=`dpkg-buildflags --get CFLAGS`
gcc $CFLAGS -o somefile somefile.c

但是,我继续收到hardening-no-fortify-functions警告。我在这里做错什么了?这是假阳性吗?我能不能添加一个覆盖然后忘掉它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-26 09:51:30

有几种可能性,第三种似乎最有可能,但我已经提到了1和2,以防它们也会给您带来问题:

  1. dpkg-buildflags --get CFLAGS返回错误的东西。在我的系统中,它返回: -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security 如果您只是从命令行执行它,您会得到什么?
  2. 您的CFLAGS值没有传递给gcc。我假设您在这里使用的是Makefile;这两个语句实际上是相邻的吗?如果是这样的话,您不希望CFLAGS = (有一个空格)吗?或者您是在命令行设置CFLAGS,在这种情况下,您应该知道debian会剥离环境中大多数没有启动DEB_的东西,因此您需要在任何构建包的环境中设置CFLAGS
  3. CFLAGS不足以消除硬化误差。让我们看一下lintian错误:http://lintian.debian.org/tags/hardening-no-fortify-functions.html,并注意到它写着‘确定性:疯狂的猜测’。这并不能激发人们相信它是正确的。但是,我怀疑实际的问题是:您没有引入LDFLAGS。尝试: $ dpkg-buildflags --get LDFLAGS -Wl,-Bsymbolic-functions -Wl,-z,relro

你需要这些在你的链接线上。

这一办法似乎有效(即至少汇编):

代码语言:javascript
复制
gcc `dpkg-buildflags --get CFLAGS` `dpkg-buildflags --get LDFLAGS` main.c -o main
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21318235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档