linux上go编译器下载:yum install go -y
go:hello.go
package main
import "fmt"
/* { 不能独立一行,只能跟随在函数等后面 */
func main(){
fmt.Println("hello,world")
}
运行:go run hello.go
编译:go build hello.go
编译体积:2M
去掉符号体积为1.4M:strip -s hello
c++: hello.cpp
#include <iostream>
int main()
{
std::cout << "hello,world" << std::endl;
return 0;
}
动态编译体积:8K
需要动态库如下:
[root@jn go]# ldd a.out
linux-vdso.so.1 => (0x00007ffd87d78000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f1f793b5000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1f790b3000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f1f78e9d000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1f78acf000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1f796bf000)
[root@jn go]#
静态编译体积:5.5M
去掉符号体积为1.3M:strip -s a.out
结论:
go语言使用静态编译,初衷是为了避免库依赖,相比C++静态编译,体积方面相差不多