读书时间 2011-05-23 Linux/C/++

14 篇文章 0 订阅
1 篇文章 0 订阅

《Linux高级程序设计》2nd version,杨宗德

 

1. 杂问

* http://www.maigoo.com/maigoo/134qb_index.html

* 写一个Chat的例子(Tica)

* server-side目前使用的主要工具及版本:内核?GCC/GDB?

* 目前用到的所有server-side开发需要的工具、环境、流程与步骤等等?

* 调试与跟踪相关的机制,日志文件?

* putty联VMWare的时候,如何避免中文乱码?

            A:使用echo $LANG查出编码为UTF8,将putty session的translation属性设为UTF8,OK! 2011/12/19

另,Putty使用东东:http://www.cnblogs.com/tippoint/archive/2010/09/21/1832639.html 

 

2. gcc

* gcc参数

-E:生成包含文件,如gcc -E hello.c -ohello.i

* gcc处理cpp程序,不会自动生成执行文件,只有g++会生成

* #include自定义头文件只能使用"",否则需要使用-I引入

                                                                        ^ 什么意思? 2011/12/12

                                                                        ^ 意思是指定include文件的目录,是“I”(AI)而非“l" 2011/12/19

 

3. make

* PHONY:指明伪目标

一旦指明一个目标是伪目标,则 make ”伪目标名“方式执行的时候,不会混淆,即使有同名文件存在的情况下也是如此。2011/12/19

 

all: prog1 prog2 prog3

.PHONY all

prog1: prog1.o util.o

...

prog2: prog2.o util.o

...

prog3: prog3.o util.o

...

...

注:make命令将生成三个不同程序

* VPATH与vpath

 

4. gdb

编译时加上-g开关

Q:p argv[0]为何找不到变量argv?

 

5. static lib

ar rc libhello.a libhello.o

 

6. shared lib

 

[root@frank shared-lib]# gcc -g -shared -Wl, -soname, libhello.so.1.0 -o libhello.so lib.o -lc
gcc: libhello.so.1.0:没有那个文件或目录
gcc: 无法识别的选项‘-soname,’
[root@frank shared-lib]# g++ -g -shared -Wl, -soname, libhello.so.1.0 -o libhello.so lib.o -lc
g++: libhello.so.1.0:没有那个文件或目录
g++: 无法识别的选项‘-soname,’

Q:是否需要使用gcc而非g++?

暂时不用-soname,直接生成.so

[root@frank shared-lib]# g++ lib.cpp -fPIC -shared -o libhello.so

[root@frank shared-lib]# g++ lib-test.cpp -o lib-test -lhello -L./

[root@frank shared-lib]# ./lib-test
./lib-test: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory

Q:文件已经存在,Why找不着?

 

[root@frank shared-lib]# ldd lib-test
        linux-gate.so.1 =>  (0x00d4b000)
        libhello.so => not found
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0055b000)
        libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00b61000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x006e9000)
        libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x00a1c000)
        /lib/ld-linux.so.2 (0x009ff000)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值