与gcc链接时出错?

时间:2012-06-18 22:30:08

标签: c gcc linker

我运行以下命令来链接项目中的不同文件。

/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -l /opt/gcc-4.7-cilkplus/lib64/ -o exec main.o \
    mysql-client.o databaseConnection-common.o murmurhash3.o bloom-filter.o
    `mysql_config --cflags --libs\` -lcilkrts

请注意选项 -l /opt/gcc-4.7-cilkplus/lib64 /

当我运行此命令时,我收到此错误:

  

/ usr / bin / ld:找不到-l / opt / gcc-4.7-cilkplus / lib64 /

但是我的系统中存在此目录。任何人都可以告诉错误。

3 个答案:

答案 0 :(得分:3)

-l(el)后面应该是一个库,而不是一个目录。也许你的意思是-L或-I(眼睛)

答案 1 :(得分:0)

您正在使用-l,您应该使用-L。选项-l指定库,而-L指定查找库的目录。

另请注意,-l-L与其各自的值之间没有空格。

答案 2 :(得分:0)

-Lpath/to/lib -lname是语法(在-L-l之后没有空格)。例如,如果链接到静态库,则意味着应该使用path/to/lib/libname.a

完成链接

另外,请注意链接器的参数顺序很重要。也就是说,如果对象A使用库B,则应在其后写入B。如果B本身使用C,则应首先提及A,然后B,然后C

因此,您的命令可能如下所示:

/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -o exec main.o mysql-client.o \
databaseConnection-common.o murmurhash3.o bloom-filter.o \
`mysql_config --cflags --libs\` -L/opt/gcc-4.7-cilkplus/lib64/ -lcilkrts
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                Used -L and moved here