Как я могу установить ccshared =-fPIC при выполнении./настраивать?

getline() можно использовать двумя различными способами:

  1. Считать в буфер, предоставленный вызывающей стороной.
  2. Выделите память при чтении.

Для использования 1. инициализируйте переданный указатель, чтобы указать на действительную память, и передайте также размер последней.

#define INITIAL_SIZE (42)

int main(void)
{  
  char * buffer = malloc(INITIAL_SIZE * sizeof *buffer);
  size_t bufsize = INITIAL_SIZE;
  ssize_t characters = getline(&buffer, &bufsize, stdin);
  if (-1 == characters)
  {
     /* handle error. */
  }
  else
  {
     /* use buffer */
  }

  free(buffer); /* Free buffer. */
}

Для использования 2. инициализируйте указатель, переданный NULL, и передайте 0 как размер.

int main(void)
{
  char * buffer = NULL;
  size_t bufsize = 0;
  ssize_t characters = getline(&buffer, &bufsize, stdin);
  if (-1 == characters)
  {
     /* handle error. */
  }
  else
  {
     /* use buffer */
  }

  free(buffer); /* Free buffer. */
}

Примечание: getline() возвращает ssize_t , а не size_t.

19
задан Crt 19 December 2016 в 22:48
поделиться

5 ответов

Запустите настройку с - enable-shared . Затем -fPIC будет включен как часть общих флагов.

18
ответ дан 30 November 2019 в 03:25
поделиться

Я получил его работающий путем добавления -fPIC после CC= gcc -pthread, т.е. CC= gcc -pthread -fPIC в Make-файле.

6
ответ дан 30 November 2019 в 03:25
поделиться
  1. Выполнение ./configure --help, возможно передавая по каналу к grep PIC, чтобы видеть, существует ли опция включить это
  2. установка Try переменная среды, прежде чем выполнение настраивает, например, CCSHARED = "-fPIC"./настраивать (как единственная команда, принимая удар)

, Если ни один из тех не работает, необходимо прочитать настраивать код и понять условия, на которые это тестирует лучше.

3
ответ дан 30 November 2019 в 03:25
поделиться

Разве это не CCFLAGS? (Не были то, что сторона мира некоторое время.)

0
ответ дан 30 November 2019 в 03:25
поделиться

Как отмечалось в другом месте, запуск configure с --enable-shared должен привести к включению -fPIC во флаги компилятора. Однако вы все равно можете увидеть ошибку «не удалось прочитать символы», если попытаетесь выполнить параллельную сборку, например, с помощью make -j8. У меня была такая же ошибка в RHEL 5.2, и она исчезла, только когда я удалил '-j8' из моего вызова make ...

1
ответ дан 30 November 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: