something about Compile and Link on Embedded Linux

1 , Compile 流程



2,The `##' preprocessing operator performs token pasting

#define myprintf(format, ...) printf (format, ##__VA_ARGS__)
#define myprintf(args...) myprintf (args)

3, Endian
  例: mutil-byte number - register 12 34 56 78 
  
big-endian:
the most significant byte has the lowest address
L                                H
78     56      34        12

little-endian:
bytes at lower addresses have lower significance
L                                H
12     34      56        78

4,  -rpath=dir
Add a directory to the runtime library search path,  当然也可以用 environment   variable LD_RUN_PATH

5, Dynamic loading
dlopen() to load a shared library 
dlsym() to find the address of a symbol  

6, extern "C"
#ifdef __cplusplus
extern “C” {
#endif
……
#ifdef __cplusplus
}
#endif
主要是由于C++ overload的特性,的函数编译之后会有类型后缀,而C不会有;
When you state that a function has extern "C" linkage, the C++  compiler does not add argument/parameter type information to the name used for linkage

7,  Optimize level
-O, -O2, -O3, -Os

8,  -D<macro>[=<val>]          
Define a <macro> with <val> as its value.  If just <macro> is given, <val> is taken to be 1

9,  Attribute extended by GNU 
The keyword __attribute__ allows you to specify special attributes when making a
declaration. This keyword is followed by an attribute specification inside double
parentheses

The following attributes are currently defined for functions on all targets:
aligned, alloc_size, noreturn, returns_twice, noinline, noclone,always_inline, flatten, pure, const, nothrow, sentinel, 
format, format_arg, no_instrument_function,no_split_stack, section, constructor, destructor, used, unused, 
deprecated, weak,malloc, alias, ifunc, warn_unused_result, nonnull, gnu_inline, externally_visible, hot, cold, artificial, error and warning

10, 一些常用指令
ar:  Create, modify, and extract from archives
nm:  List symbols from object files
objcopy:   Copy and translate object files
objdump:  Display information from object files
ranlib:  Generate index to archive contents
readelf:  Display the contents of ELF format files
size:  List section sizes and total size
strings:  List printable strings from files
strip:  Discard symbols
addr2line: Convert addresses to file and line

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值