1

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

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

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

4

3 回答 3

3

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

于 2012-06-18T22:34:44.113 回答
0

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

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

于 2012-06-18T22:35:17.447 回答
0

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

另外,请注意链接器的参数顺序很重要。也就是说,如果 objectA使用 library BB应该写在它之后。如果B本身使用CA则应先提及 ,然后再提BC

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

/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
于 2012-06-18T22:36:52.737 回答