免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: li2002
打印 上一主题 下一主题

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀? [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
21 [报告]
发表于 2003-08-02 14:16 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

[quote]原帖由 "li2002"]啊,是吗?g++怎么编成动态连接的,偶没加参数默认是静态的吗?[/quote 发表:
     

如果系统存在动态库,并且可以访问到,例如Libc.so,那么优先处理动态库,除非编译指定要静态库。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
22 [报告]
发表于 2003-08-02 14:20 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

[quote]原帖由 "li2002"]真是不解,没用什么加密的函数阿。[/quote 发表:
     

  1. #include<iostream.h>;
  2. main()
  3. {
  4. cout<<"hello world"<<endl;
  5. }
复制代码


加和不加头文件区别也存在。如果加那么头文件相关的信息要连接进去的,如果不加编译程序找标准库ld。

去掉头文件看看结果,更有意思。

论坛徽章:
0
23 [报告]
发表于 2003-08-02 17:21 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

cout不是那么简单的,把什么都去掉,只留一个空空的main在那里会如何呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
24 [报告]
发表于 2003-08-02 19:15 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

蜗牛 啊,自己找个环境试试呀

呵呵

论坛徽章:
0
25 [报告]
发表于 2003-08-02 19:25 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

响应老大的号召
测试环境:
Redhat Linux 7.2

  1. [billing@bfdx]$ gcc -v
  2. Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
  3. gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)
  4. [billing@bfdx]$ whereis cc
  5. cc: /usr/bin/cc
  6. [billing@bfdx]$ whereis g++
  7. g++: /usr/bin/g++ /usr/share/man/man1/g++.1.gz
  8. [billing@bfdx]$ ls -l /usr/bin/g++
  9. -rwxr-xr-x    4 root     root        80172 Sep  4  2001 /usr/bin/g++*
  10. [billing@bfdx]$ ls -l /usr/bin/cc
  11. lrwxrwxrwx    1 root     root            3 Jun 24 22:00 /usr/bin/cc ->; gcc*
  12. [billing@bfdx]$ whereis gcc
  13. gcc: /usr/bin/gcc /usr/share/man/man1/gcc.1.gz
  14. [billing@bfdx]$ ls -l /usr/bin/gcc
  15. -rwxr-xr-x    2 root     root        78892 Sep  4  2001 /usr/bin/gcc*
复制代码


  1. main()
  2. {
  3. }
  4. [billing@bfdx]$ cc test.cpp
  5. [billing@bfdx]$ ls -l
  6. total 20
  7. -rwxr-xr-x    1 billing  users       13555 Aug  2 19:23 a.out*
  8. -rw-r--r--    1 billing  users          11 Aug  2 19:22 test.cpp
  9. [billing@bfdx]$ ldd a.out
  10.         libc.so.6 =>; /lib/i686/libc.so.6 (0x40018000)
  11.         /lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)
  12. [billing@bfdx]$ g++ test.cpp -o a1.out
  13. [billing@bfdx]$ ls -l
  14. total 36
  15. -rwxr-xr-x    1 billing  users       13555 Aug  2 19:23 a.out*
  16. -rwxr-xr-x    1 billing  users       13805 Aug  2 19:23 a1.out*
  17. -rw-r--r--    1 billing  users          11 Aug  2 19:22 test.cpp
  18. [billing@bfdx]$ ldd a1.out
  19.         libstdc++-libc6.2-2.so.3 =>; /usr/lib/libstdc++-libc6.2-2.so.3 (0x40018000)
  20.         libm.so.6 =>; /lib/i686/libm.so.6 (0x4005a000)
  21.         libc.so.6 =>; /lib/i686/libc.so.6 (0x4007d000)
  22.         /lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)
复制代码

看来主要就是库的不同喔

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
26 [报告]
发表于 2003-08-02 19:33 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

[quote]原帖由 "qjlemon"]看来主要就是库的不同喔[/quote 发表:
     

蜗牛,怎么不显示
#include <*.h>;
void main()
{
}
的结果呀?

论坛徽章:
0
27 [报告]
发表于 2003-08-02 19:40 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

test.cpp:

  1. #include<iostream.h>;
  2. main()
  3. {
  4. }
复制代码


  1. [billing@bfdx]$ g++ test.cpp -o a2.out
  2. [billing@bfdx]$ ls -l a2.out
  3. -rwxr-xr-x    1 billing  users       13805 Aug  2 19:37 a2.out*
  4. [billing@bfdx]$ ldd a2.out
  5.         libstdc++-libc6.2-2.so.3 =>; /usr/lib/libstdc++-libc6.2-2.so.3 (0x40018000)
  6.         libm.so.6 =>; /lib/i686/libm.so.6 (0x4005a000)
  7.         libc.so.6 =>; /lib/i686/libc.so.6 (0x4007d000)
  8.         /lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)
  9. [billing@bfdx]$ cc test.cpp -o a3.out
  10. [billing@bfdx]$ ls -l a3.out
  11. -rwxr-xr-x    1 billing  users       13555 Aug  2 19:37 a3.out*
  12. [billing@bfdx]$ ldd a3.out
  13.         libc.so.6 =>; /lib/i686/libc.so.6 (0x40018000)
  14.         /lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)
复制代码

变化不大呀!大概看了一下iostream.h,有一些代码,不过估计占不了太大的尺寸啊
模板库如果不用的话就不会占多少空间吧 多半是的

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
28 [报告]
发表于 2003-08-02 19:45 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

那个ANSI C的代码测试看看。

结构又是什么?

论坛徽章:
0
29 [报告]
发表于 2003-08-02 19:52 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

差不多喔!
test.cpp:

  1. #include <stdio.h>;
  2. main()
  3. {
  4. printf("hello world\n");
  5. }
复制代码

  1. [billing@bfdx]$ cc test.cpp -o a1.out
  2. [billing@bfdx]$ g++ test.cpp -o a2.out
  3. [billing@bfdx]$ ls -l
  4. total 36
  5. -rwxr-xr-x    1 billing  users       13673 Aug  2 19:53 a1.out*
  6. -rwxr-xr-x    1 billing  users       13923 Aug  2 19:53 a2.out*
  7. -rw-r--r--    1 billing  users          59 Aug  2 19:53 test.cpp
  8. [billing@bfdx]$ ldd *.out
  9. a1.out:
  10.         libc.so.6 =>; /lib/i686/libc.so.6 (0x40018000)
  11.         /lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)
  12. a2.out:
  13.         libstdc++-libc6.2-2.so.3 =>; /usr/lib/libstdc++-libc6.2-2.so.3 (0x40018000)
  14.         libm.so.6 =>; /lib/i686/libm.so.6 (0x4005a000)
  15.         libc.so.6 =>; /lib/i686/libc.so.6 (0x4007d000)
  16.         /lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
30 [报告]
发表于 2003-08-02 20:01 |只看该作者

大家注意到没有?gnu的c++编译器编成的文件怎么很大呀?

感谢你的测试结果,在Linuix上,差不多g++要比cc大些。
如上蜗牛兄弟测试了动态库的情况。

现在你把动态库mv为另外一个文件名称,让连接程序连接静态库,看看测试结果。让大家澄清这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP