[C++] Прога компилится в Linux, но не компилится в Cygwin
Cygwin — среда загадочная. Многие вещи на ней не собираются, поскольку не все фичи линукса реализованы там. Обычно в таких случаях помогает обновление Cygwin и гугление по сообщению об ошибке.
версия самая последняя
гугл молчит как партизан ;(
Может надо sys/types.h перед sys/stat.h?
---
"Аллах не ведёт людей неверных."
/usr/include/cygwin/types.h
---
"Аллах не ведёт людей неверных."
sys/types.h =)
man grep
---
"Аллах не ведёт людей неверных."
$ grep -r timestruc_t /usr/includeпо теме тут только sys/types.h
/usr/include/cygwin/msg.h: timestruc_t msg_stim; /* Time of last msgsnd (
). */
/usr/include/cygwin/msg.h: timestruc_t msg_rtim; /* Time of last msgrcv (
). */
/usr/include/cygwin/msg.h: timestruc_t msg_ctim; /* Time of last change.
*/
/usr/include/cygwin/sem.h: timestruc_t sem_otim; /* Last semop time. *
/
/usr/include/cygwin/sem.h: timestruc_t sem_ctim; /* Last time changed by
semctl . */
/usr/include/cygwin/shm.h: timestruc_t shm_atim; /* Time of last
shmat . */
/usr/include/cygwin/shm.h: timestruc_t shm_dtim; /* Time of last
shmdt . */
/usr/include/cygwin/shm.h: timestruc_t shm_ctim; /* Time of last
change by shmctl . */
/usr/include/cygwin/stat.h: timestruc_t st_atim;
/usr/include/cygwin/stat.h: timestruc_t st_mtim;
/usr/include/cygwin/stat.h: timestruc_t st_ctim;
/usr/include/cygwin/stat.h: timestruc_t st_atim;
/usr/include/cygwin/stat.h: timestruc_t st_mtim;
/usr/include/cygwin/stat.h: timestruc_t st_ctim;
/usr/include/cygwin/stat.h: timestruc_t st_atim;
/usr/include/cygwin/stat.h: timestruc_t st_mtim;
/usr/include/cygwin/stat.h: timestruc_t st_ctim;
/usr/include/cygwin/types.h:#ifndef __timestruc_t_defined
/usr/include/cygwin/types.h:#define __timestruc_t_defined
/usr/include/cygwin/types.h:typedef struct timespec timestruc_t;
/usr/include/cygwin/types.h:#endif /*__timestruc_t_defined*/
чтоб уж не сомневаться сделал так
$cat ../../../../hsboard/common/commonfunctions.hошибка та же и там же ;(
---cut----
#ifdef __WIN32__
#include <conio.h>
#include <sys/types.h>
#include "/usr/include/cygwin/types.h"
#include <sys/stat.h>
#endif
#include <fcntl.h>
#include "gheader.h"
----cut----
щас попробую ещё системный fcntl.h поправлю - посмотрю что будет
Не извращайся, напиши без этой ерунды:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "gheader.h"
---
...Я работаю...
/usr/include/cygwin/types.h:typedef struct timespec timestruc_t;
И что эта строчка тебе ни о чем не говорит?
Кстати это C, а не C++.
подозреваю
#include <time.h>
первой строчкой должен помочь
$ fgrep -r timespec /usr/include/sys/types.h
struct timespec {
struct timespec it_interval; /* Timer period */
struct timespec it_value; /* Timer expiration */
$ uname -mrs
CYGWIN_NT-5.1 1.5.18(0.132/4/2) i686
---
"Аллах не ведёт людей неверных."
Кстати, моя прога написана на c++, то что в неё включён системный файл, который (разумеется) является си это не причина
Собственно, я ждал, что ошибка именно в коде, а не в системных библиотеках, что логично, кстати.
да, кстати
Кстати, а ты не пробовал почитать тред?причитал разумеется
я что-то недопонял?
![](/images/graemlins/confused.gif)
просвети
да, кстатичто "да"?
причитал разумеетсяя просил помочь, а не обсудить мои умственные способности и особенно способность отличать c от c++
я что-то недопонял?
просвети
и если ты написал сюда не с этой целью, то к чему вообще твой пост, повторяющий уже дважды сказанное предложение (при том что я на оба ответил но только с особенной ядовитостью?
либо ты не читал тред, либо.. либо объясни сам в чём фишка, не дочитав тред до конца, не обдумав написанное, писать первое что придёт в голову?
что "да"?кстати
#ifndef __time_t_defined
typedef _TIME_T_ time_t;
#define __time_t_defined
/* Time Value Specification Structures, P1003.1b-1993, p. 261 */
struct timespec {
time_t tv_sec; /* Seconds */
long tv_nsec; /* Nanoseconds */
};
struct itimerspec {
struct timespec it_interval; /* Timer period */
struct timespec it_value; /* Timer expiration */
};
#endif
очевидно #endif должен быть до структур,
в противном случае, если где-то тип time_t ранее определен вместе с макросом __time_t_defined, но без структур (а это вполне логично при используемых соглашениях и даже встречается в <sys/timeb.h> того же cygwin то эти две структуры не будут определены в <sys/types.h>, т.е. например если <sys/timeb.h> инклюдить до первого инклюда <sys/types.h>, то инклюд <sys/stat.h> выдаст ошибку.
PS: если ты "ждал, что ошибка именно в коде, а не в системных библиотеках", что чего ты этот самый код не запостил?
после этого действительно собирается
но только при линковке вылезает куча ошибок 'undefined reference', которые вообще непонятно чем обоснованы
в общем, я решил забить на cygwin
один из разработчиков сказал, что должно под mingw32 собраться - сейчас ставлю
спасибо всем за помощь
, сорри за излишние наезды
просто работа вся горит, не очень было приятно выслушивать о различиях c и c++
а так, как я уже сказал - респект
Оставить комментарий
Biglem
Раньше не сталкивался с Cygwin, сегодня впервые установил на виртуальную машину с виндойСитуация такая, есть прога, которая компилится в Linux
более того, даже в винде она компилится под цигвином - но только не у меня
может в cygwin библиотек не хватает каких-то?
при компиляции вылетает вот с такой ошибкой:
в файле /usr/include/cygwin/stat.h эти строки выглядят так:
видимо, не определена timestruc_t
пробовал подрубать <cygwin/types.h> - тот же результат
что я делаю не так?