日期:2014-05-16  浏览次数:20722 次

gcc -g 通不过 -c却通过 原因?
C/C++ code

/* main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
mytool1_print("hello");
mytool2_print("hello");
}
/* mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
/* mytool1.c */
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}


Makefile
C/C++ code

main: mytool1.o mytool2.o main.o
    gcc -o main main.o mytool1.o mytool2.o
main.o: main.c mytool1.h mytool2.h
    gcc -g main.c
mytool1.o: mytool1.c mytool1.h
    gcc -g mytool1.c
mytool2.o: mytool2.c mytool2.h
    gcc -g mytool2.c

clean: 
    rm -f mytool1.o mytool2.o main.o


当把gcc -g 换成 -c就ok了 。为什么?


------解决方案--------------------
gcc -o main main.o mytool.o -g

gcc -c main.c

为什么

man gcc ..........
------解决方案--------------------
-g 仅仅是增加调试信息 ,没有约束生成的作用
默认就会执行到链接,生成可执行elf

-c 会停在汇编这一步,不进行链接
------解决方案--------------------
编译过程中 貌似和-g木有什么关系