انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: سلمان م. در 12 تیر 1391، 07:22 بظ
-
با عرض سلام خدمت همه بزرگای مجلس
من یه مشکل تو برنامه نویسی زبان c داشتم. وقتی کد زیر رو با gcc اجرا می کنم پیغام خطا می ده ولی تو dev-c++ تو ویندوز که اجرا می کنم راحت و آسوده جواب می ده! لطفا بگید چیکار کنم
#include "stdio.h"
#include "math.h"
main()
{
double a ;
scanf("%lf",&a);
printf("%lf",sin(a));
return 0 ;
}
-
این برنامه کاملا غلطه.مشکل از Dev-C هست که خطا نمیده.درستش اینه:
#include <stdio.h>
#include <math.h>
int main()
{
double a;
scanf("%lf",&a);
printf("%lf",sin(a));
return 0;
}
دقت کنید پسوند فایل هم .c باشه نه .cpp
-
داداش دستت درد نکنه. ولی بازم همون پیغام خطا رو میده! نتبیتز این رو میگه.
/home/sal/NetBeansProjects/CppApplication_2/main.c:8: undefined reference to `sin'
collect2: ld returned 1 exit status
-
این کد با gcc بدون اشکال کامپایل میشه!
-
این کد با gcc بدون اشکال کامپایل میشه!
من وقتی با gcc از تو ترمینال میخوام کامپایل کنم این پیغامو میده.
collect2: ld returned 1 exit status
-
به جای دستور gcc از دستور g++ استقاده کنید که خودش کتابخونه ها رو لینک می کنه.فقط پسوند فایل تون .c باشه.
در ضمن تابع sin مقدار زاویه رو به رادیان میگیره نه به درجه.(صرفا جهت اطلاع بود)
راهه دیگش استفاده از همون gcc فقط با فلگ -lm هست که کتابخونه math رو لینک کنه.
عکس (برای بزرگ شدن کلیک کنید):
(http://up.vatandownload.com/index.php?module=thumbnail&file=7w2zg80ivdfo1uqq395k.png) (http://up.vatandownload.com/images/7w2zg80ivdfo1uqq395k.png)
-
من وقتی با gcc از تو ترمینال میخوام کامپایل کنم این پیغامو میده.
collect2: ld returned 1 exit status
توی ترمینال چه دستوری وارد میکنید?
g++ main.c -o main
ویرایش: این پست هنگامی زده شد که دوستان جواب را ارسال کردند...
-
دم همتوم گرم! مخصوصا Shervinkh ! مرسی. حل شد.
-
چرا از gcc استفاده میکنید وقتی cc به اون خوبی هست \\:D/
دستوراتش هم با gcc هیچ تفاوتی نداره. فقط قبل از کار مطمئن بشید نصب هست یا نه :
$which cc
-
چرا از gcc استفاده میکنید وقتی cc به اون خوبی هست \\:D/
دستوراتش هم با gcc هیچ تفاوتی نداره.
یک جوری میگید cc به اون خوبی که هر شخصی ندونه فکر میکنه cc چی هست!!! cc تنها یک Symbolic Link به gcc هستش و با gcc فرقی نداره، غیر از اینکه توی Alternativeها یک کامپایلر دیگه رو براش تعریف کنید. برای همین هم هست که دستوراتش با gcc هیچ تفاوتی نداره، چون خود gcc هستش.
به جای دستور gcc از دستور g++ استقاده کنید که خودش کتابخونه ها رو لینک می کنه.
درسته که شدنی هستش ولی این کار خیلی کار درستی نیست و پیشنهاد نمیشه. بهتره ++g تنها برای کامپایل برنامههای ++C استفاده بشه، یا برنامههای C که قرار هست Object اونها با برنامهی ++Cای که داریم Link بشه.