Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: страуструпп "принципы и практика..."  (Прочитано 1705 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн andeykapas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
привет!
Собираю экзампл 12 главы. Создал папку и поместил в неё файлы с сорса, запустил make, как я понимаю он отработал успешно:
andreykapas@Andrew-pc:~/proj1/proj12-16$ make
ar rcs libbookgui.a chapter.12.3.o Graph.o GUI.o Simple_window.o Window.o     
andreykapas@Andrew-pc:~/proj1/proj12-16$

вот makefile:
#
# This is a common Makefile for code examples from the book
# "Software - Principles and Practice using C++" by Bjarne Stroustrup
#

#
# Usage:
#     make        - Build all examples
#     make clean  - Clean all examples
#

INCLUDES = -I"$(FLTK)"
LIBS     = -lstdc++
CXXFLAGS = $(INCLUDES) -Wall -time -O3 -DNDEBUG
LIBFLAGS = 
AR       = ar

.SUFFIXES: .cpp .o

# Create a list of source files.
SOURCES  = $(shell ls *.cpp)
# Create a list of object files from the source file lists.
OBJECTS = ${SOURCES:.cpp=.o}     
# Create a list of targets.
TARGETS = libbookgui.a

# Build all targets by default
all: $(TARGETS)

%.a: $(OBJECTS)
$(AR) rcs $@ $(OBJECTS)

# A rule to build .o file out of a .cpp file
%.o: %.cpp
$(CXX) $(CXXFLAGS) -o $@ -c $<

# A rule to clean all the intermediates and targets
clean:
rm -rf $(TARGETS) $(OBJECTS) *.out *.stackdump


а что и как запускать?
« Последнее редактирование: 11 Апреля 2015, 12:41:16 от andeykapas »

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #1 : 11 Апреля 2015, 13:34:19 »
Этот make собрал библиотеку libbookgui.a

Оффлайн andeykapas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #2 : 11 Апреля 2015, 13:39:17 »
я так и подумал), но что теперь делать? Как использовать эту библиотеку? Куда поместить, как привязать к файлам экзамплов?

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3271
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #3 : 11 Апреля 2015, 13:47:06 »
Сделайте как root "make install", она и поместится, куда надо.
В примерах должен быть pro-файл или make-файл, если она им нужна,
то уже должна быть в них подключена.
Пётр.

Оффлайн andeykapas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Re: страуструпп \"принципы и практика...\"
« Ответ #4 : 11 Апреля 2015, 13:50:32 »
т.е. make install libbokgui.a ?

Пользователь решил продолжить мысль 11 Апреля 2015, 13:55:05:
andreykapas@Andrew-pc:~/str/str12$ make install
make: *** Нет правила для сборки цели `install'.  Останов.
andreykapas@Andrew-pc:~/str/str12$
вот такая ерунда...
« Последнее редактирование: 11 Апреля 2015, 13:55:05 от andeykapas »

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #5 : 11 Апреля 2015, 17:08:58 »
а что и как запускать?

а зачем тогда собирать?  :2funny:

Оффлайн andeykapas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #6 : 11 Апреля 2015, 20:48:38 »
а что и как запускать?

а зачем тогда собирать?  :2funny:

спасибо за весёлый ответ, но я действительно не знаю, что дальше делать... Если Вы знаете, помогите...

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #7 : 11 Апреля 2015, 22:23:29 »
а что и как запускать?

а зачем тогда собирать?  :2funny:

спасибо за весёлый ответ, но я действительно не знаю, что дальше делать... Если Вы знаете, помогите...

Ну книжку же вы зачем-то сели читать?
Сами по себе примеры к книге ... даже самого Страуструпа - ценности не представляют, собраны они или разобраны...
Значит, если сели читать про C++, то нужно твёрдо разобраться что такое компиляция, линковка, как работает make, кто такие библиотеки и как указать с ними связывание...
А без этих знаний вашим познаниям C++, даже если они будут необъятными - грош цена!

Ну возьмите вот это почитайте: Разработка программных проектов в Linux.

Оффлайн andeykapas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #8 : 11 Апреля 2015, 22:51:22 »
спасибо) попробую почитать, но даже читать нужно выборочно, и лучше по совету знающих людей, а не всё подряд (очень не рационально ибо). А Страуструппа сел читать, потому, как сказали умные люди, что очень полезно)

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: страуструпп "принципы и практика..."
« Ответ #9 : 11 Апреля 2015, 22:54:15 »
Страуструппа сел читать, потому, как сказали умные люди, что очень полезно)
Страуструп - это самая исчерпывающая и точная информация о C++, потому как от автора языка.
Но и никто не пишет так тяжело и непонятно как Страуструп.
Чтобы читать Страуструпа нужно, по крайней мере, иметь изрядный опыт программирования вообще.

Оффлайн andeykapas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Страуструппа сел читать, потому, как сказали умные люди, что очень полезно)
Страуструп - это самая исчерпывающая и точная информация о C++, потому как от автора языка.
Но и никто не пишет так тяжело и непонятно как Страуструп.
Чтобы читать Страуструпа нужно, по крайней мере, иметь изрядный опыт программирования вообще.

я всё-таки попробую) под виндой я смог его проекты запускать, думаю и под ubuntu научусь...
Да вот и Ваша книга может поможет)

Пользователь решил продолжить мысль [time]12 Апрель 2015, 00:04:27[/time]:
Цитировать
Сами по себе примеры к книге ... даже самого Страуструпа - ценности не представляют, собраны они или разобраны...
Значит, если сели читать про C++, то нужно твёрдо разобраться что такое компиляция, линковка, как работает make, кто такие библиотеки и как указать с ними связывание...
и здесь Вы отчасти правы, но... Для начала я решил поучиться у Страуструппа, а потом, или по ходу углубляться в "компиляции и линковки", потому как одновременно всё не получается, нужно сосредотачиваться на том, что кажется более важным)

Пользователь решил продолжить мысль [time]12 Апрель 2015, 00:12:04[/time]:
и к стати, я уже, спасибо гуглу, дальше продвинулся, вопрос в том: зачем Ваш форум, если Вы не хотите помочь? Ведь с Вашей помощью я и подобные научились бы... И линковать и компилировать)

Пользователь решил продолжить мысль [time]12 Апрель 2015, 00:15:20[/time]:
вот я компилирую и линкую, без мэйка, но пока не всё удачно... Если можете помогите:
andreykapas@Andrew-pc:~/Strsustr/str12_3$ g++ chapter.12.3.cpp Simple_window.cpp Graph.cpp GUI.cpp Window.cpp -L/usr/loca/lib -lfltk -lXext -lX11 -lm -o mark.outа ерор такой:
Graph.cpp:(.text+0x1c31): undefined reference to `Fl_JPEG_Image::Fl_JPEG_Image(char const*)'
Graph.cpp:(.text+0x1c6b): undefined reference to `Fl_GIF_Image::Fl_GIF_Image(char const*)'
collect2: error: ld returned 1 exit status

Пользователь решил продолжить мысль [time]12 Апрель 2015, 00:50:11[/time]:

и вот я сделал!)
всем, кто хочет учить Страуструппа на ubuntu, можно делать так:
в папку поместить файлы с сорса: Graph.cpp и .h, GUI.cpp и .h, Point.h, Simple_window.cpp и .h, Window.cpp и .h, сюда же файл .срр примера, std_lib_facilities.h - на уровень выше.
в Graph.cpp закоментить или удалить:
/*
Circle::Circle(Point p, int rr)    // center and radius
:r(rr)
{
    add(Point(p.x-r,p.y-r));       // store top-left corner
}
*/
в нём же, добавить:
#include <string.h>иначе strlen не декларед в этом скоуп)))
в Simple_window.cpp добавить Graph_lib::
void Simple_window::cb_next(Graph_lib::Address, Graph_lib::Address pw)
// call Simple_window::next() for the window located at pw

    Graph_lib::reference_to<Simple_window>(pw).next();   
}
так же и в Simple_window.h:
#ifndef SIMPLE_WINDOW_GUARD
#define SIMPLE_WINDOW_GUARD 1

#include "GUI.h"    // for Simple_window only (doesn't really belong in Window.h)
#include "Graph.h"

//using namespace Graph_lib;

//------------------------------------------------------------------------------

struct Simple_window : Graph_lib::Window {
    Simple_window(Point xy, int w, int h, const string& title );

    bool wait_for_button(); // simple event loop

private:
    Graph_lib::Button next_button;     // the "next" button
    bool button_pushed;     // implementation detail

    static void cb_next(Graph_lib::Address, Graph_lib::Address); // callback for next_button
    void next();            // action to be done when next_button is pressed

};

//------------------------------------------------------------------------------

#endif // SIMPLE_WINDOW_GUARD
далее в терминале перейти в созданную деррикторию, чтобы не прописывать путь полностью каждый раз и:
g++ [имя вашего файла экзампла].cpp Simple_window.cpp Graph.cpp GUI.cpp Window.cpp -L/usr/loca/lib -lfltk -lXext -lX11 -lfltk_images -lm -o mark.outпотом запускаем mark.out... и все счастливы!)))


Пользователь решил продолжить мысль 11 Апреля 2015, 23:51:37:
жаль не умею прикрепить скриншот(((
« Последнее редактирование: 11 Апреля 2015, 23:51:38 от andeykapas »

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.