something about Compile and Link on Embedded Linux

来源:互联网 发布:普联软件 编辑:程序博客网 时间:2024/06/03 04:09

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

原创粉丝点击