day03
来源:互联网 发布:mac上哪里下游戏 编辑:程序博客网 时间:2024/06/10 20:58
一、C语言的指针
二、使用typedef定义类型的别名
今天的内容:
一、环境变量
shell是用于用户和操作系统对话的一个窗口。一款软件。
用户使用shell和操作系统对话的时候,需要存储一些信息,这些信息被存储到变量(shell认知的变量)中。变量分为两类。自定义变量、环境变量
自定义变量只能在自己中使用。而环境变量可以被子进程继承。
如何察看环境变量?
env
环境变量的格式
环境变量的名字=环境变量的值
USER=tarena
在bash中如何察看环境变量的值
echo $环境变量的名字
echo "$环境变量的名字"
echo '$环境变量的名字'
如何添加一个自定义变量并为其设初值?
name=tarena
将用户自定变量转换为环境变量
export 环境变量的名字
export name
可以将上边两个步骤合二为一。
export name=pycoming
PATH环境变量
tarena@tarena-G41MT-S2PT:~$ echo $PATH
/home/tarena/workdir/Android2.3/android-source/jdk1.6.0_16/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/tarena/workdir/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools
. 当前路径
如何将当前路径添加到PATH环境变量的后边
export PATH=$PATH:.
/home/tarena/workdir/Android2.3/android-source/jdk1.6.0_16/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/tarena/workdir/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools:.
bash在启动的时候,需要先运行一个文件,然后在启动bash。
这个文件成为bash的启动配置文件 ~/.bashrc
~ 当前用户的家目录
PS1环境变量
用于设置bash的提示符。
《鸟哥私房菜》
export PS1="\W\$"
二、静态库的制作和使用
静态库文件的命名 lib+库名.a
如何制作和使用静态库文件?(举例说明,使用tmath文件夹)
1、将需要加到静态库里的源文件编译为目标文件
tmath$gcc -c *.c
tmath$ls
add.c add.o mul.c mul.o tmath.h
tmath$
2、将目标文件添加到静态库里。
tmath$ar -r libtmath.a *.o
ar: creating libtmath.a
tmath$ls
add.c add.o libtmath.a mul.c mul.o tmath.h
3、使用静态库文件链接目标文件形成可执行文件
gcc test.o -Ltmath -ltmath
-L路径 路径可以是绝对路径也可以是相对路径,指定链接器的搜索路径
-l库名 静态库或动态库的库名。
三、动态库的制作和使用
动态库的命名 lib+库名.so
1、将需要添加到动态库里的源文件编译为与位置无关的目标文件
tmath$gcc -c -fPIC *.c
tmath$ls
add.c add.o mul.c mul.o tmath.h
2、将目标文件添加到动态库中。
tmath$gcc -shared -o libtmath.so *.o
tmath$ls
add.c add.o libtmath.so mul.c mul.o tmath.h
3、使用动态库链接目标文件,生成可执行文件。
day03$pwd
/home/tarena/CSD1702/uc/day03
day03$gcc test.c -Ltmath -ltmath -o tt
test.c: 在函数‘main’中:
test.c:24: 错误: 只允许在 C99 模式下使用‘for’循环初始化声明
test.c:24: 附注: 使用 -std=c99 或 -std=gnu99 来编译您的代码
day03$gcc test.c -Ltmath -ltmath -o tt -std=c99
day03$ls
a.out hello.c test.o tt 笔记~
hello test.c tmath 笔记
day03$tt
tt: error while loading shared libraries: libtmath.so: cannot open shared object file: No such file or directory
出错了.????
出错的原因是加载器在指定的路径下找不到tt程序依赖的动态库文件。
使用ldd命令察看可执行文件依赖的动态库文件
day03$ldd tt
linux-gate.so.1 => (0xb7751000)
libtmath.so => not found
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7596000)
/lib/ld-linux.so.2 (0xb7752000)
day03$nm tt
08049f20 d _DYNAMIC
08049ff4 d _GLOBAL_OFFSET_TABLE_
0804876c R _IO_stdin_used
w _Jv_RegisterClasses
08049f10 d __CTOR_END__
08049f0c d __CTOR_LIST__
08049f18 D __DTOR_END__
08049f14 d __DTOR_LIST__
08048858 r __FRAME_END__
08049f1c d __JCR_END__
08049f1c d __JCR_LIST__
0804a024 A __bss_start
0804a01c D __data_start
08048720 t __do_global_ctors_aux
080484f0 t __do_global_dtors_aux
0804a020 D __dso_handle
w __gmon_start__
08048712 T __i686.get_pc_thunk.bx
08049f0c d __init_array_end
08049f0c d __init_array_start
08048710 T __libc_csu_fini
080486a0 T __libc_csu_init
U __libc_start_main@@GLIBC_2.0
0804a024 A _edata
0804a02c A _end
0804874c T _fini
08048768 R _fp_hw
08048410 T _init
080484c0 T _start
0804a024 b completed.7108
0804a01c W data_start
0804a028 b dtor_idx.7110
08048550 t frame_dummy
0804858e T main
U printf@@GLIBC_2.0
08048574 T process
U t_add
U t_div
U t_mul
U t_sub
告诉加载器,动态库文件的路径。
两种方式:
使用环境变量LD_LIBRARY_PATH指定加载器的寻找路径。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./tmath/
四、动态加载库函数
五、程序中的错误处理。
阅读全文
0 0
- day03
- day03
- day03
- day03
- day03
- day03
- day03
- day03
- day03
- day03
- day03
- day03
- Day03
- day03
- day03
- day03
- day03
- day03
- Ie9以下的input输入框placeholder属性兼容方案
- 设计模式之工厂方法模式
- 第1.7章 scrapy之ip代理的使用
- 二叉树的遍历
- 合并两个序列
- day03
- 【Mybatis】基础了解
- nginx修改nginx.conf文件后reload出现的错误
- Java 程序员必须掌握的 Linux 命令
- Codeforces Ultra-Fast Mathematician
- 《Mastering R for Quantitative Finance》Chapter1笔记
- InputArray和OutputArray的那些事
- 默认打开IE10、IE11就强制使用IE8/IE9浏览模式或更低版本的浏览模式
- android developer tiny share-20170620