ошибка в программе SD-карты - PullRequest
0 голосов
/ 02 декабря 2010

я запускаю программу SD Card в Linux, но я обнаружил следующую ошибку .... но я также включил заголовочный файл

anish@ubuntu:~/Desktop/testing/sd card$ gcc -o sdcard sdcard.c
/usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
/tmp/ccVMCgzn.o: In function `SDCardInit':
sdcard.c:(.text+0x23): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x4d): undefined reference to `SPI1Send'
sdcard.c:(.text+0x8b): undefined reference to `SPI1Byte'
sdcard.c:(.text+0xb2): undefined reference to `SPI1Send'
sdcard.c:(.text+0xfd): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x102): undefined reference to `CRC16Bit_GenTable'
/tmp/ccVMCgzn.o: In function `SDResponseMatch':
sdcard.c:(.text+0x128): undefined reference to `SPI1Byte'
/tmp/ccVMCgzn.o: In function `SDResponseDontMatch':
sdcard.c:(.text+0x162): undefined reference to `SPI1Byte'
/tmp/ccVMCgzn.o: In function `SDWriteBlock':
sdcard.c:(.text+0x1db): undefined reference to `CRC_7Bit'
sdcard.c:(.text+0x202): undefined reference to `SPI1Send'
sdcard.c:(.text+0x23b): undefined reference to `CRC_16Bit'
sdcard.c:(.text+0x24a): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x25d): undefined reference to `SPI1Send'
sdcard.c:(.text+0x26b): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x27b): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x287): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x2f7): undefined reference to `SPI1Byte'
/tmp/ccVMCgzn.o: In function `SDReadBlockPart':
sdcard.c:(.text+0x35e): undefined reference to `CRC_7Bit'
sdcard.c:(.text+0x388): undefined reference to `SPI1Send'
sdcard.c:(.text+0x3f0): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x3ff): undefined reference to `CRC_16Bit_AddByte'
sdcard.c:(.text+0x41c): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x43b): undefined reference to `CRC_16Bit_AddByte'
sdcard.c:(.text+0x463): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x472): undefined reference to `CRC_16Bit_AddByte'
sdcard.c:(.text+0x48e): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x4a0): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x4d6): undefined reference to `SPI1Byte'
/tmp/ccVMCgzn.o: In function `SDWriteBlockHead':
sdcard.c:(.text+0x53c): undefined reference to `CRC_7Bit'
sdcard.c:(.text+0x563): undefined reference to `SPI1Send'
sdcard.c:(.text+0x59b): undefined reference to `CRC_16Bit'
s    dcard.c:(.text+0x5aa): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x5ca): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x5f0): undefined reference to `CRC_16Bit_AddByte'
sdcard.c:(.text+0x5ff): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x616): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x626): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x632): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x6a2): undefined reference to `SPI1Byte'
/tmp/ccVMCgzn.o: In function `SDWriteMultiBlock':
sdcard.c:(.text+0x702): undefined reference to `CRC_7Bit'
sdcard.c:(.text+0x729): undefined reference to `SPI1Send'
sdcard.c:(.text+0x76e): undefined reference to `CRC_16Bit'
sdcard.c:(.text+0x77d): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x790): undefined reference to `SPI1Send'
sdcard.c:(.text+0x7a5): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x7b5): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x7c1): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x7fa): undefined reference to `SPI1Byte'
sdcard.c:(.text+0x847): undefined reference to `SPI1Byte'

Ответы [ 2 ]

1 голос
/ 02 декабря 2010

crt1.o является C Runtime .Указывает, где запустить программу и несколько других вещей.Выполнение начинается с символа _start и затем переходит к основному значению, определенному в программе.Итак, из ошибки

In function `_start':
(.text+0x18): undefined reference to `main'

я предполагаю, что вы, возможно, ошиблись в написании своей основной функции, возможно, вы назвали ее Main или что-то еще.

Для других ошибок вам нужно будет связатьс библиотекой, которая предоставляет эти функции, или, если вы используете функции в других исходных файлах, вам нужно будет также скомпилировать их, а затем связать все эти файлы вместе.

1 голос
/ 02 декабря 2010

Похоже, вы забыли связать пару библиотек.

или если вы хотите сгенерировать объектный файл, чтобы связать его впоследствии, это было бы лучше

gcc -o sdcard.o sdcard.c
...