Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: adam.beno 15 Října 2013, 04:28:42
-
Proism vas mam problem s pouzitim hlavicky #include <sys/stat.h>. V jednom projekte potrebujem zmenit aktualny adresar, no ako nahle hoci len pripojim hlavicku #include <sys/stat.h>, pri kompilacii zacne vyhazovat :
/home/adam/Desktop/minimalizaci/evolucia.h:7: In file included from ../../minimalizaci/evolucia.h:7:0,
/home/adam/Desktop/minimalizaci/main.cpp:16: from ../../minimalizaci/main.cpp:16:
/usr/include/i386-linux-gnu/sys/stat.h:-1: In function 'int stat(const char*, stat*)':
/usr/include/i386-linux-gnu/sys/stat.h:212: error: expected primary-expression before ',' token
/usr/include/i386-linux-gnu/sys/stat.h:-1: At global scope:
/usr/include/i386-linux-gnu/sys/stat.h:212: error: declaration does not declare anything [-fpermissive]
/usr/include/i386-linux-gnu/sys/stat.h:-1: In function 'int fstat(int, stat*)':
ukazuje chyby v knihovne stat.h atp...
Pritom tuto istu hlavicku pouzivam aj v inom projekte tiez pragramovanom cez qt creator, no tam mi hlavicku prijme normalne a potom pracujem nastavujem vytvaram adresare lubovolne. Neviete mi poradit preco v jednom projekte mi robi prave toto? Alebo je mozne ze sa to "bije" s dalsimi nainkludovanymi hlavickami?
Dakujem za radu
-
A kdyz tu hlavicku nenaincludujes, tak si stezuje taky?
-
aano....prave to je zvlastne....mam pripraveny taky kod na vytvorenie adresaru a nastavenie do neho :
int mkdir(const char *pathname, mode_t mode);
mkdir("../Evolucie",0700);
int chdir(const char *path);
chdir("../Evolucie");
ten kod tam vobec nemusi byt pouzity(je zakomentovany) a inklud hlavicky staci na to aby program vypisal to co som nakopiroval vyssie v prispevku
-
Kdyz je ten kod zakomentovany tak proc ho tady zminujes?
Muzes sem ten zdrojak (relevantni cast) dat?
Jako je jasne ze ta hlavicka je rozbita:
/usr/include/i386-linux-gnu/sys/stat.h:-1: In function 'int stat(const char*, stat*)':
, otazka je jak se ti to povedlo.
-
hm neviem ci spravne odhadnem relevantnu cast kodu, pretoze nech tu hlavicku pouzijem v ktorejkolvek inej hlavicke projektu, urobi to same... ale teda nakopirujem sem deklaraciu triedy kde chcem danu hlavicku pouzit:
#ifndef EVOLUCIA_H
#define EVOLUCIA_H
#include <vector>
#include "nr3.h"
#include "ran.h"
#include "mdeviates.h"
#include "sys/stat.h"
#include "ftor.h"
#include "griewftor.h"
#include "parabftor.h"
#include "jedinec.h"
#include "rovroz.h"
#include "normroz.h"
#include "ftor.h"
#include "algorithm"
#include "generacia.h"
class Evolucia{
public:
int pocetJedincov, pocetGeneraci, pocetEvolucii, rozmer;
double sigma;
double tau;
Funktor *ftor;
Evolucia(int,int,int,int,double,double,Funktor& ftor );
void vyvinNonCrossEvoluciu(RovRozFunktor &, NormRozFunktor &);
void vyvinCrossEvoluciu(RovRozFunktor & nahRR, NormRozFunktor & nahNR);
};
#endif // EVOLUCIA_H
-
'#include "sys/stat.h"' ti nebude fungovat, protoze ji preprocesor hleda lokalne a ne v systemu. Spravne je to <sys/stat.h>.
Jak kompilujes? Preinstaluj balik linux-kernel-headers?
-
jasne ja som tam omylom ponechal uvozovky...ale uplne to same robi aj s #include <sys/stat.h>, ako kompilujem? nikdy som sa o to obzvlast nezaujimal ale cez qt kreator....pouziva kompilator g++. Co konkretne myslis pod tym preinstalovat kernel ?
-
Tím myslí provést třeba následující (nejdříve odebrat a potom znovu nainstalovat linux headers):
sudo apt-get remove linux-headers-$(uname -r)
sudo apt-get install linux-headers-$(uname -r)
Jsou to hlavičkové soubory pro jádro.
-
skusil som ale bohuzial nepomohlo....ono problem bude zrejme niekde v programe...pretoze ako vravim nefunguje to len v jednom konkretnom projekte ktory pozuiva tu hlavicku v subore mimo main... pokial to pozuijem v main vsetko ide v pohode