gcc命令行结构参数

时间:2018-08-11 17:43:54

标签: gcc-warning


我尝试使用gcc版本6.3.0 20170516(Raspbian 6.3.0-18 + rpi1 + deb9u1)编译c文件。
我在源文件的文件夹中运行编译器,但我不断收到最后一个参数(' bcm2835 ')的“找不到文件”错误消息。

   gcc -o gpio -l rt /home/pi/bcm2835-1.15/src/bcm2835.c -l bcm2835
   /usr/bin/ld: cannot find -lbcm2835
   collect2: error: ld returned 1 exit status

AFAIK,gcc没有指定第三个参数,我不知道第三个参数的用途以及在哪里找到它。
如果省略该参数,则会出现几条错误行,每条错误行对应一个内部命令,例如:

    undefined reference to bcm2835_init

我也想知道 rt 的含义。我在官方的gcc文档中找不到它。
谢谢

1 个答案:

答案 0 :(得分:0)

-l之后,应该没有空格。因此应为-lrt(而不是-l rt)和应为-lbcm2835(而不是-l bcm2835)。

在调用-L之前,您需要使用-lbcm2835(大写L)添加链接器搜索路径。

输入文件通常应位于最后(这是以main.c结尾的参数)。那是

gcc -o main -lrt -lbcm2835 /home/pi/bcm2835-1.15/main.c

-l将库链接到程序。 -L设置库搜索路径,以便-l将找到指定的库。

有关-l-L的详细信息,请参见this page