gcc 4.2.1 Проблема связывания: Неопределенные символы для архитектуры x86_64

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

Итак, я просматриваю базовый курс Crash на C и пытаюсь скомпилировать пример, используемый для иллюстрации ссылок на созданные вами файлы, а не из стандартных библиотек. Вот код:

math_functions.h

int sum (int x, int y); float average (float x, float y, float z); 

math_functions.c

 int sum (int x, int y) { return (x + y); } float average (float x, float y, float z) { return (x + y + z) / 3; } 

и наконец

test3.c

 #include  #include "math_functions.h" main () { int theSum = sum (8, 12); float theAverage = average (16.9, 7.86, 3.4); printf ("the sum is: %i ", theSum); printf ("and the average is: %f \n", theAverage); printf ("average casted to an int is: %i \n", (int)theAverage); } 

Все они находятся в одной папке. Когда я открываю терминал, cd в папку и запускаю:

 gcc test3.c -o test3 

Я получил:

 Undefined symbols for architecture x86_64: "_average", referenced from: _main in ccmf69Tt.o "_sum", referenced from: _main in ccxms0fF.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status 

Это происходит, если я использую gcc или g ++ (что мне не нужно делать, так как это все должно быть C), и все, что я скомпилировал ранее, прекрасно работает с

 #include  

на вершине.

Я могу заставить его скомпилировать и выполнить штраф, удалив

 #include "math_functions.h" 

из файла test3.c , помещая содержимое math_functions.h перед main () и содержимое math_functions.c после main (). И да, это копирование и вставка, поэтому его определенно один и тот же код.

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

Поэтому мне интересно, есть ли способ исправить это, поэтому я могу включить в него больше, чем стандартные библиотеки C, C ++ и Objective-C?

Это происходит через окно терминала, вручную вводя команду gcc, и через CodeRunner, который имеет стандартные команды, все спрятанные в кнопку, так что я не могу это записать.

Я запускаю Mountain Lion 10.8.4 (12E55) на Mac Mac 2012 года, используя инструменты командной строки из Xcode 4.6.2 (установил их всего несколько часов назад, я на самом деле не сделал много, чем стандартное использование Mini до сих пор)

У меня есть все то же программное обеспечение, установленное на моем MacBook Air, но не тестировало его, чтобы увидеть, все ли то же самое происходит.

Любые указатели? Если кто-то еще это сделал и работал там где-то здесь, ТО, пожалуйста, укажите мне, я искал круглый час, но, как я уже говорил, все решения, которые я нашел до сих пор, это код C ++ или что-то странное со стандартными библиотеками.

    Вам просто нужно скомпилировать maths_function. Компонент жалуется, что у него нет определений, содержащихся в этом модуле.

     gcc test3.c math_functions.c -o test3