Link Search Menu Expand Document

Часть 1.2

Проверьте свои знания. Отметьте верные высказывания.

  • Для сборки динамической библиотеки gcc требуется указать опцию --shared
  • GNU make может использоваться только для сборки программ на С/С++
  • Для вывода символических имен объектного(бинарного) файла используется nm
  • с++filt используется для восстановления исходного имени функций (Demangle)
  • на языках на C++ и Java
  • Для вывода символических имен объектного(бинарного) файла используется stat
  • В основе работы make лежит информация о зависимостях частей проекта

Найдите соответствие между прототипами функций С++ и их закодированными именами

Закодированные имена Функция
_Z8getValuei getValue(int)
_Z8getValuePFviE getValue(void (*)(int))
_Z8getValuePvi getValue(void*, int)
_Z8getValuev getValue()

В этом задании Вам необходимо создать разделяемую динамическую библиотеку libsolution.so в которой реализовать функцию со следующим прототипом:

int stringStat(const char *string, size_t multiplier, int *count);

Функция возвращает значение длины строки string, умноженное на multiplier, и увеличивает на 1 значение, на которое указывает count.

Представление решения

Решение предоставляется в виде двух файлов solution.c и Makefile, в последнем предполагается цель по умолчанию, которая приводит к сборке Вашей библиотеки.

Вывод

Программа (функция в библиотеке) ничего не выводит на консоль

solution.c

#include <string.h>

int stringStat(const char *string, size_t multiplier, int *count) {
  *count = *count + 1;
  return (int) (strlen(string) * multiplier);
}

Makefile

all: solution.c
	gcc --shared -fPIC -o libsolution.so solution.c

Часть 1.1 Часть 1.3