将函数声明为static
使其仅在其文件中可用,而使用-s
编译程序将使其所有全局函数和变量无法从应用程序外部访问。那么,如果我只是用-s
编译一个应用程序,它是否与使所有内容都静态化具有相同的效果,或者它比这更复杂?
换句话说,这两个是否会产生相同的可执行文件:
/*** cc -s main.c ***/
#include <stdio.h>
void a(){
printf("Hello world!\n");
}
int main(void){
a();
return 0;
}
###############################
/*** cc main.c ***/
#include <stdio.h>
static void a(){
printf("Hello world!\n");
}
int main(void){
a();
return 0;
}
1条答案
按热度按时间hjzp0vay1#
编译时的-s选项不会影响从应用程序外部访问函数和变量。-s只剥离符号,所以可执行文件会小一点。