与gcc链接时出错?

与gcc链接时出错?,c,gcc,linker,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-ci

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

/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/


但是这个目录在我的系统中存在。谁能告诉我这个错误。

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

你正在使用
-L
你应该在哪里使用
-L
。选项
-l
指定库,而
-l
指定要在其中查找库的目录


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

-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

-L
告诉链接器要搜索的目录。这几乎肯定是我的错。我现在明白了。您是否可以告诉其他地方指定这些链接器库,这样我就不必每次都通过执行-L来包含这些链接器库(就像gcc每次在链接之前搜索的某个路径变量)