帖子

libmsc.so:文件明明存在,可是报"cannot find -lmsc"错误。

[复制链接]
  • TA的每日心情

    2020-5-18 12:26
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3511 156****2525 发表于 2020-5-15 23:21:38 1#
    本帖最后由 156****2525 于 2020-5-15 23:35 编辑

    环境:树莓派4b+Ubuntu Server 20.04
    .so文件是提交工单申请的树莓派库文件

    之前在VMware虚拟机(Ubuntu 16.04)里可以正常编译。

    刚开始是这样报错的:
    1. gcc -g -Wall -I./include robot.o file_str_handle.o iat_record.o request.o linuxrec.o speech_recognizer.o xtts.o cJSON.o awake.o -o bin/hr_robot -L./libs/RaspberryPi -lmsc -lrt -ldl -lpthread -lasound -lstdc++ -lcurl
    2. /usr/bin/ld: skipping incompatible ./libs/RaspberryPi/libmsc.so when searching for -lmsc
    3. /usr/bin/ld: skipping incompatible /usr/local/lib/libmsc.so when searching for -lmsc
    4. /usr/bin/ld: cannot find -lmsc
    5. collect2: error: ld returned 1 exit status
    6. make: *** [Makefile:28: bin/hr_robot] Error 1
    复制代码

    我将libmsc.so这个文件放入./libs/RaspberryPi/目录下,然后将./libs/RaspberryPi/目录下的libmsc.so拷贝到/usr/local/lib/libmsc.so目录下,依然报错
    1. gcc -g -Wall -I./include robot.o file_str_handle.o iat_record.o request.o linuxrec.o speech_recognizer.o xtts.o cJSON.o awake.o -o bin/hr_robot -L./libs/RaspberryPi -lmsc -lrt -ldl -lpthread -lasound -lstdc++ -lcurl
    2. /usr/bin/ld: skipping incompatible ./libs/RaspberryPi/libmsc.so when searching for -lmsc
    3. /usr/bin/ld: skipping incompatible /usr/local/lib/libmsc.so when searching for -lmsc
    4. /usr/bin/ld: cannot find -lmsc
    5. collect2: error: ld returned 1 exit status
    6. make: *** [Makefile:28: bin/hr_robot] Error 1
    复制代码

    两个文件是存在的:
    1. ubuntu@ubuntu:~/robot_with_awake$ ls -l /usr/local/lib/
    2. total 28348
    3. -rwxrwxrwx 1 root root   3823588 May 15 22:48 libmsc.so
    4. -rwxr-xr-x 1 root root  25195313 May 15 21:37 libw_ivw.so
    5. drwxrwsr-x 3 root staff     4096 Apr 23 23:03 python3.8
    6. ubuntu@ubuntu:~/robot_with_awake$ ls -l ./libs/RaspberryPi/
    7. total 3736
    8. -rwxrwxrwx 1 ubuntu ubuntu 3823588 May 15 21:52 libmsc.so
    复制代码

    Makefile文件内容如(前面的行号是vim的):
    1. #common makefile header

    2. LDLIBS = $(shell curl-config --libs)


    3. DIR_INC = ./include
    4. DIR_BIN = ./bin
    5. DIR_LIB = ./libs

    6. TARGET  = hr_robot
    7. BIN_TARGET = $(DIR_BIN)/$(TARGET)

    8. CROSS_COMPILE =
    9. CFLAGS = -g -Wall -I$(DIR_INC)

    10. #可根据实际需要修改,选择所需平台SDK,默认为x64或x86平台。
    11. ifdef RaspberryPi
    12. LDFLAGS := -L$(DIR_LIB)/RaspberryPi
    13. else
    14. LDFLAGS := -L$(DIR_LIB)/x64
    15. endif

    16. LDFLAGS += -lmsc -lrt -ldl -lpthread -lasound -lstdc++

    17. OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))

    18. $(BIN_TARGET) : $(OBJECTS)
    19.         $(CROSS_COMPILE)gcc $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS)

    20. %.o : %.c
    21.         $(CROSS_COMPILE)gcc -c $(CFLAGS) $(LDLIBS) [        DISCUZ_CODE_15        ]lt; -o $@
    22. clean:
    23.         @rm -f *.o $(BIN_TARGET)

    24. .PHONY:clean

    25. #common makefile foot
    复制代码

    重启了好几遍都无效。

    求大神支招。








    小七 发表于 2020-5-18 17:12:06
    2#
    树莓派是需要交叉编译的,有提工单编译过吗。
    使用道具 举报 回复