每周小题-Linux命令,编译链接

December 09, 2023
测试
测试
测试
测试
3 分钟阅读

来源:公众号【编程珠玑】

作者:守望先生

ID:shouwangxiansheng

//来源:公众号【编程珠玑】
//main.c
#include <stdio.h>
#include <math.h>
int main(void)
{
    int a = 10;
    int b = 4;
    int c = pow(a,b);
    printf("10^4 = %d",c);
    return 0;
}
如何确定pow函数需要包含什么头文件?

还是通过man手册或者网上查询

NAME
       pow, powf, powl - power functions

SYNOPSIS
       #include <math.h>

       double pow(double x, double y);
       float powf(float x, float y);
       long double powl(long double x, long double y);

       Link with -lm.
如何知道使用某个函数需要链接什么库?

还是通过man手册或者网上查询。 参考《Linux常用命令-man》。

以上代码该如何编译?
$ gcc -o main main.c -lm
以上代码使用该如何编译?
$ gcc -o main main.c -lm
以下方式能编译过吗?为什么?
$ gcc -lm -o main main.c

-lm在前,里面将会被认为没有符号被需要。参考《如何自制静态库》

如何查看程序链接了哪些动态库?
$ ldd main
    linux-vdso.so.1 =>  (0x00007ffc97fdf000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc1aadc1000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc1aa9f7000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc1ab0ca000)

参考《Linux常用命令-开发调试篇》。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多