【问题标题】:dynamic library gcc compilation error动态库gcc编译错误
【发布时间】:2015-01-06 12:28:47
【问题描述】:

我有以下代码:

gcc -Wall -fno-stack-protector -O2 -g -fPIC -c ec.c
pwd
gcc -shared -Wl,-soname,libec.so.1 -o libec.so.1.0 ec.o /urs/src/soem/ethercat*.o ../soem/nicdrv.o -lc -lpthread

mv libec.so.1.0 /usr/lib/.

cd /usr/lib
ldconfig -v -n
ln -sf libec.so.1.0 libec.so
ln -sf libec.so.1.0 libec.so.1

编译时出现如下错误:

/home/ebox/Documents/SVN/Libs/ec
gcc: error: /urs/src/soem/ethercat*.o: No such file or directory
mv: cannot stat ‘libec.so.1.0’: No such file or directory

我知道 gcc 命令有问题,但不知道如何解决这个问题。路径中有几个以 ethercat* 开头的 .o 文件。

我怎样才能解决这个问题?

【问题讨论】:

  • 来自gcc 的消息应该很清楚:它找不到任何名为/urs/src/soem/ethercat*.o 的文件。另一个错误是因为gcc 无法链接到您的库,所以它不存在。至于为什么找不到文件,再检查一下路径的拼写(提示:我怀疑你有目录/urs)。
  • 检查/urs/src是否为/usr/src
  • `/usr/src/soem' 路径中有几个.o 文件以ethercat 开头,所以我不明白为什么找不到文件。
  • 我明白了,这很明显。我要把它改成正确的路径。非常感谢!

标签: c gcc ld


【解决方案1】:

错误表示没有与/urs/src/soem/ethercat*.o模式匹配的文件。

请注意,第一个组件是urs。可能应该是usr

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多