linux - Arduino SD 库 arduino-core 1 :1. 0.0.1+dfsg-7 未定义引用

标签 linux compilation makefile arduino

我正在尝试编译 DumpFile example在 Raspbian 上使用 arduino-core 和 arduino-mk 包。

它通常在其他项目中运行良好,但是当涉及到使用 SD 库时,我在编译时出现错误,我不知道是我做错了什么还是 SD 库本身的问题。

来自changelog of the arduino-core包,在我的包版本和最新版本之间,SD 库中没有任何固定内容。因此升级可能无济于事。

我正在复制运行 >make

的输出
/usr/bin/avr-gcc -c -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I. 
-I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/standard -I/usr/share/arduino/libraries/SD -I/home/pi/sketchbook/libraries/SD -g -Os -w -Wall -ffunction-sections -fdata-sections -fno-exceptions /usr/share/arduino/libraries/SD/File.cpp -o build-cli/libs/SD/File.o
mkdir -p build-cli/libs/SD/
/usr/bin/avr-gcc -c -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I. -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/standard -I/usr/share/arduino/libraries/SD -I/home/pi/sketchbook/libraries/SD -g -Os -w -Wall -ffunction-sections -fdata-sections -fno-exceptions /usr/share/arduino/libraries/SD/SD.cpp -o build-cli/libs/SD/SD.o
/usr/bin/avr-ar rcs build-cli/libcore.a  build-cli/WInterrupts.o  build-cli/wiring_analog.o  build-cli/wiring.o  build-cli/wiring_digital.o  build-cli/wiring_pulse.o  build-cli/wiring_shift.o  build-cli/CDC.o  build-cli/HardwareSerial.o  build-cli/HID.o  build-cli/IPAddress.o  build-cli/main.o  build-cli/new.o  build-cli/Print.o  build-cli/Stream.o  build-cli/Tone.o  build-cli/USBCore.o  build-cli/WMath.o  build-cli/WString.o  build-cli/libs/SD/File.o build-cli/libs/SD/SD.o
/usr/bin/avr-gcc -mmcu=atmega328p -Wl,--gc-sections -Os -o build-cli/readSd.elf build-cli/readSd.o build-cli/libcore.a  -lc -lm
build-cli/libcore.a(File.o): In function `File::operator bool()':
/usr/share/arduino/libraries/SD/File.cpp:146: undefined reference to `SdFile::sync()'
/usr/share/arduino/libraries/SD/File.cpp:148: undefined reference to `SdFile::write(void const*, unsigned int)'
build-cli/libcore.a(File.o): In function `File::operator bool()':
/usr/share/arduino/libraries/SD/utility/SdFat.h:214: undefined reference to `SdFile::read(void*, unsigned int)'
build-cli/libcore.a(File.o): In function `File::operator bool()':
/usr/share/arduino/libraries/SD/File.cpp:149: undefined reference to `SdFile::seekSet(unsigned long)'
build-cli/libcore.a(File.o): In function `File::operator bool()':
/usr/share/arduino/libraries/SD/utility/SdFat.h:214: undefined reference to `SdFile::close()'
build-cli/libcore.a(SD.o): In function `_GLOBAL__sub_I__Z20getNextPathComponentPcPjS_':
/usr/share/arduino/libraries/SD/utility/Sd2Card.h:155: undefined reference to `Sd2Card::init(unsigned char, unsigned char)'
build-cli/libcore.a(SD.o): In function `_GLOBAL__sub_I__Z20getNextPathComponentPcPjS_':
/usr/share/arduino/libraries/SD/utility/SdFat.h:430: undefined reference to `SdVolume::init(Sd2Card*, unsigned char)'
build-cli/libcore.a(SD.o): In function `_GLOBAL__sub_I__Z20getNextPathComponentPcPjS_':
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:43: undefined reference to `SdFile::openRoot(SdVolume*)'
build-cli/libcore.a(SD.o): In function `_GLOBAL__sub_I__Z20getNextPathComponentPcPjS_':
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdVolume::init(Sd2Card*, unsigned char)'
/usr/share/arduino/libraries/SD/utility/SdFat.h:430: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:430: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdFile::close()'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdFile::open(SdFile*, char const*, unsigned char)'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdFile::close()'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdFile::open(SdFile*, char const*, unsigned char)'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdFile::open(SdFile*, char const*, unsigned char)'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdFile::close()'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `SdFile::seekSet(unsigned long)'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
/usr/share/arduino/libraries/SD/utility/SdFat.h:138: undefined reference to `vtable for SdFile'
collect2: error: ld returned 1 exit status
make: *** [build-cli/readSd.elf] Error 1

有人可以帮我查明问题所在吗?

谢谢

最佳答案

注意 SD 库有一个包含未定义函数的子目录。也许你需要添加 -I/usr/share/arduino/libraries/SD/utility 到你的 make

关于linux - Arduino SD 库 arduino-core 1 :1. 0.0.1+dfsg-7 未定义引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484018/

相关文章:

linux - bash 计算顺序文件

c - 如果一个简单的 linux c 程序链接到自定义的 glibc 库,则会出现段错误

linux - 在 bash 中传递给函数的变量名

编译C代码字符串

linux - CentOS 7 pidof -x 不工作

compilation - rdmd 命令无法识别

python - 使用 pyinstaller 文本无法解码

makefile - 操作系统检测 makefile

c - 使用makefile在终端上运行

包含 ddd 调试器选项的 C++ Makefile