我尝试使用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文档中找不到它。
谢谢
答案 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。