Manual pengguna AVR-Libc memiliki seluruh bab tentang cara membangun perpustakaan . Saya akan menyarankan mulai dari sana. Jika Anda menggunakan IDE seperti gerhana, akan ada pengaturan proyek yang berlaku jika Anda ingin membangun sebagai pustaka alih-alih yang dapat dieksekusi.
Edit
Inilah yang dilakukan gerhana ketika saya menyiapkannya untuk contoh Anda:
Agar tidak dapat dikompilasi secara sepele, saya mengubah fungsi test_ Anda menjadi:
#include "test.h"
void test_function()
{
volatile int i = 0;
i++;
}
Membangun perpustakaan:
avr-gcc -Wall -g2 -gstabs -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF"test.d" -MT"test.d" -c -o"test.o" "../test.c"
avr-ar -r "libtest.a" ./test.o
avr-objdump -h -S libtest.a >"libtest.lss"
avr-size --format=avr --mcu=atmega328p libtest.a
Membangun program utama
avr-gcc -I"C:\path\to\my\workspace\test" -Wall -g2 -gstabs -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF"program.d" -MT"program.d" -c -o"program.o" "../program.c"
avr-gcc -Wl,-Map,MainProgram.map -L"C:\path\to\my\workspace\test\Release" -mmcu=atmega328p -o"MainProgram.elf" ./program.o -ltest
avr-objdump -h -S MainProgram.elf >"MainProgram.lss"
avr-size --format=avr --mcu=atmega328p MainProgram.elf
... dan itu dibangun tanpa kesalahan. Dugaan saya adalah Anda perlu menyertakan jalur yang ditentukan dalam baris perintah. Mengikuti konvensi penamaan yang tepat juga cukup penting, coba dan ikuti pola di atas. Jelas perintah avr-objdump dan ukuran avr hanya untuk informasi lebih lanjut dan tidak diperlukan jika Anda hanya membangun.
Saya cukup yakin bahwa jika Anda perlu mengkompilasi ulang perpustakaan Anda untuk arsitektur target spesifik dan kecepatan jam juga.