LINUX.ORG.RU

pthread и проблемы с makefile -ом

 , ,


0

1

есть проблема, возможно достаточно простая, но так как под линукс я програмирую совсем недавно, никак не могу ее решыть есть makefile который собирает бинарник из 3 файлов myLab.cpp myLinThread.h myLinThread.cpp

в файле myLinThread.cpp есть получение времени работы потока собственно

void *funct (void *args)
{
sParam *params= (sParam *)args;
long double & begin=params->begin;
long double & end=params->end;
myLinThread &currentThread = *(params->s_thread);
long double s,si,y,eps=0.0001;
//вот здесь похоже проблема
clock_gettime(CLOCK_REALTIME, &currentThread.m_startTime);
for(long double x=begin;x<end;x+=step)
{
y=pow((1+x),-1.0);
s=1;
si=x;
while(fabs(y-s)>=eps)
{
	s-=si;
	si=si*x*(-1.0);
}
cout<<"x: "<<x<<" y: "<<y<<" f(x): "<<s<<endl;
}
//и соотвествено вот здесь, без этих двух строк, все работает //хорошо. С ними же вылетает Segmentation fault я пытался как //то проверить значение переменных с помощью gdb
//но как уже говорилось я пока нуб в линуксе, и я получаю //ошыбкуReading symbols from /home/andrew/LABOS8/LABOS8...(no //debugging symbols found)...done.
//изза этого (как мне кажеться) я не могу, получить доступ ни //к одной переменной с помощью print 

clock_gettime(CLOCK_REALTIME, &currentThread.m_endTime);
}

сам мейкфайл

 
TARGET=$(shell basename `pwd`)
SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:%.cpp=%.o)
all: $(TARGET)

$(OBJECTS): $(SOURCES)

$(TARGET): $(OBJECTS)
	$(CXX) -o $(TARGET) $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS) -lpthread -lrt -Wall -D_REENTRANT

clean:
	$(RM) $(OBJECTS) $(TARGET)

.PHONY: all clean


Последнее исправление: ymn (всего исправлений: 1)

Для начала осиль отступы.

anonymous
()

ммм... «студенческий» с++. никуда от него не деться.

mos ★★☆☆☆
()
Ответ на: комментарий от yoghurt

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

xaizek ★★★★★
()
Ответ на: комментарий от yoghurt

Теперь буду знать, спасибо. Видимо, из-за «other tools» где-то написано передавать этот флаг линкеру, а в man за такой опцией даже как-то не лез.

xaizek ★★★★★
()
Ответ на: комментарий от yoghurt

вот так?

$(CXX) -g -o $(TARGET) $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS) -lpthread -lrt

если да, то это не работает, все тот же Reading symbols from /home/andrew/LABOS8/LABOS8...(no debugging symbols found).

fakelessjohny
() автор топика
Ответ на: комментарий от fakelessjohny

Почитай уже документацию по make

И меньше копипасти мейкфайлы из интернетов.

CXXFLAGS=-g

где-нибудь в начале файла.

yoghurt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.