Makefile 加了-g没有生成Debug可执行文件

秦剑 2011-09-08 07:23:17
#
# System specific settings
#

# GNU/Linux and *BSD systems
CC = gcc
CFLAGS = -g -Wall
LFLAGS = -lssl -lcrypto -s

# If your compiler cannot find the OpenSSL header and library files, add
# -I/path/to/openssl/include to CFLAGS and -L/path/to/openssl/lib to LFLAGS.

##############################################################################

OBJS = msmtp.o esmtp.o net.o tls.o base64.o cram_md5.o merror.o list.o xmalloc.o
PROG = msmtp

all:
make $(PROG)

$(PROG): $(OBJS)
$(CC) -o $(PROG) $(OBJS) $(LFLAGS)

clean:
rm -f *.o *~ core $(PROG)
clear:
rm -f *.o *~ core

以上是Makefile文件,已经加了-g可是为什么没有生成可调试的文件呢?
file msmtp:
msmtp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

请高手指点!
...全文
617 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
谭海燕 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 aa_qq110 的回复:]

这个应该没有关系吧,而且我用make clean,也没有问题。

引用 10 楼 ch_984326013 的回复:

clean:
rm -f *.o *~ core $(PROG)
有用tab键么?
[/Quote]

没有TAB会不认识的哈。
秦剑 2011-09-10
  • 打赏
  • 举报
回复
这个应该没有关系吧,而且我用make clean,也没有问题。

[Quote=引用 10 楼 ch_984326013 的回复:]

clean:
rm -f *.o *~ core $(PROG)
有用tab键么?
[/Quote]
秦剑 2011-09-10
  • 打赏
  • 举报
回复
非常谢谢!!!
真不知道这些命令-lssl -lcrypto -s是干什么,可以解释一下吗?
-s 知道了stripped,去掉调试信息

[Quote=引用 14 楼 jialejiahi 的回复:]

1 上面说的,编译是CFLAGS没加进去。

2 看看LFLAGS = -lssl -lcrypto -s ,这个-s 什么意思,就是它让你的程序被stripped 了。
[/Quote]
freetstar 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jialejiahi 的回复:]

1 上面说的,编译是CFLAGS没加进去。

2 看看LFLAGS = -lssl -lcrypto -s ,这个-s 什么意思,就是它让你的程序被stripped 了。
[/Quote]
有道理!
jialejiahi 2011-09-10
  • 打赏
  • 举报
回复
1 上面说的,编译是CFLAGS没加进去。

2 看看LFLAGS = -lssl -lcrypto -s ,这个-s 什么意思,就是它让你的程序被stripped 了。
秦剑 2011-09-10
  • 打赏
  • 举报
回复
make会正确的执行,只是生成的文件不是可调试的可执行文件而已。
我的Makefile里是加了tab的,不然会执行不成功的。
而且,我也从新加了一次tab,但是依然如此,不知道什么原因。

[Quote=引用 12 楼 feiyinzilgd 的回复:]

引用 11 楼 aa_qq110 的回复:

这个应该没有关系吧,而且我用make clean,也没有问题。

引用 10 楼 ch_984326013 的回复:

clean:
rm -f *.o *~ core $(PROG)
有用tab键么?


没有TAB会不认识的哈。
[/Quote]
ch_984326013 2011-09-08
  • 打赏
  • 举报
回复
clean:
rm -f *.o *~ core $(PROG)
有用tab键么?
秦剑 2011-09-08
  • 打赏
  • 举报
回复
http://sourceforge.net/projects/msmtp/files/msmtp/1.4.16/msmtp-1.4.16.tar.bz2/download
这时里是这个程序的下载地址,有谁可以帮我编译一下试试吗??

谢谢!!
秦剑 2011-09-08
  • 打赏
  • 举报
回复
stripped,应该是not stripped,才可以用gdb调试,对吧?

[Quote=引用 7 楼 feiyinzilgd 的回复:]

哪里出问题了?warning都是你程序引起的。
[/Quote]
谭海燕 2011-09-08
  • 打赏
  • 举报
回复
哪里出问题了?warning都是你程序引起的。
秦剑 2011-09-08
  • 打赏
  • 举报
回复
结果还是这样:
root@tdeng-deepin:/home/tdeng/sourceCode/msmtp-0.2.5# file msmtp
msmtp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
为什么呢?
秦剑 2011-09-08
  • 打赏
  • 举报
回复
现在按楼上改为;
#
# System specific settings
#

# GNU/Linux and *BSD systems
CC = gcc
CFLAGS =-g -Wall
#CFLAGS=-ansi -pedantic -Wall -O2
LFLAGS = -lssl -lcrypto -s

# If your compiler cannot find the OpenSSL header and library files, add
# -I/path/to/openssl/include to CFLAGS and -L/path/to/openssl/lib to LFLAGS.

##############################################################################

OBJS = msmtp.o esmtp.o net.o tls.o base64.o cram_md5.o merror.o list.o xmalloc.o
PROG = msmtp

all:
make $(PROG)
$(PROG): $(OBJS)
$(CC) -o $(PROG) $(OBJS) $(LFLAGS) $(CFLAGS)

clean:
rm -f *.o *~ core $(PROG)
clear:
rm -f *.o *~ core
秦剑 2011-09-08
  • 打赏
  • 举报
回复 1
[Quote=引用 2 楼 zmlovelx 的回复:]

cc的时候少了. $(CFLAGS)
所以根据没传 -g进去.
[/Quote]
不对吧:
现在我加了之后运行的结果是:
make[1]: 正在进入目录 `/home/tdeng/sourceCode/msmtp-0.2.5'
gcc -g -Wall -c -o msmtp.o msmtp.c
gcc -g -Wall -c -o esmtp.o esmtp.c
gcc -g -Wall -c -o net.o net.c
gcc -g -Wall -c -o tls.o tls.c
tls.c: In function ‘tls_init’:
tls.c:52:9: warning: the address of ‘RAND_status’ will always evaluate as ‘true’
gcc -g -Wall -c -o base64.o base64.c
gcc -g -Wall -c -o cram_md5.o cram_md5.c
gcc -g -Wall -c -o merror.o merror.c
merror.c: In function ‘add_error_line’:
merror.c:71:5: warning: implicit declaration of function ‘vasprintf’
gcc -g -Wall -c -o list.o list.c
gcc -g -Wall -c -o xmalloc.o xmalloc.c
gcc -o msmtp msmtp.o esmtp.o net.o tls.o base64.o cram_md5.o merror.o list.o xmalloc.o -lssl -lcrypto -s -g -Wall
make[1]:正在离开目录 `/home/tdeng/sourceCode/msmtp-0.2.5'
谭海燕 2011-09-08
  • 打赏
  • 举报
回复
LS的真仔细
帅得不敢出门 2011-09-08
  • 打赏
  • 举报
回复
cc的时候少了. $(CFLAGS)
所以根据没传 -g进去.
帅得不敢出门 2011-09-08
  • 打赏
  • 举报
回复
$(CC) -o $(PROG) $(OBJS) $(LFLAGS) $(CFLAGS)

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧