ahmad24shargh
دوشنبه 27 آبان 1392, 19:15 عصر
با سلام به همه اساتید محترم
تو یه فایل به اسم main.c کد زیر رو دارم :
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv) {
double da = 0.1;
printf("%f\n", round(da) );
return 0;
}
اونو با دستور زیر کامپایل کردم :
gcc -O0 -g3 -Wall -c -fmessage-length=0 -std=gnu11 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "./main.c"
حالا اگر اونو با خود gcc لینک کنم ارور میده :
$ gcc -o "sample" ./main.o
./main.o: In function `main':
/home/ahmad/workspace/sample/./main.c:6: undefined reference to `round'
collect2: error: ld returned 1 exit status
اما با ++g همین فایل سورس بدون ارور لینک میشه :
$ g++ -o "sample" ./main.o
اگر به جای متغیر da یه عدد اعشاری ثابت به تابع round ارسال کنم بدون مشکل فایل اجرایی لینک میشه.اما با وجود متغیر به جای یه ثابت این ارور رو میده.با حذف همه آپشنهای کامپایل هم وضعیت تغییری نمیکنه.چرا؟(gcc version 4.8.2)
تو یه فایل به اسم main.c کد زیر رو دارم :
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv) {
double da = 0.1;
printf("%f\n", round(da) );
return 0;
}
اونو با دستور زیر کامپایل کردم :
gcc -O0 -g3 -Wall -c -fmessage-length=0 -std=gnu11 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "./main.c"
حالا اگر اونو با خود gcc لینک کنم ارور میده :
$ gcc -o "sample" ./main.o
./main.o: In function `main':
/home/ahmad/workspace/sample/./main.c:6: undefined reference to `round'
collect2: error: ld returned 1 exit status
اما با ++g همین فایل سورس بدون ارور لینک میشه :
$ g++ -o "sample" ./main.o
اگر به جای متغیر da یه عدد اعشاری ثابت به تابع round ارسال کنم بدون مشکل فایل اجرایی لینک میشه.اما با وجود متغیر به جای یه ثابت این ارور رو میده.با حذف همه آپشنهای کامپایل هم وضعیت تغییری نمیکنه.چرا؟(gcc version 4.8.2)