🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

7 total messages Started by Borneq Sat, 30 Jun 2018 07:56
Kompilowane nagłówki z GCC (i Clang)
#309716
Author: Borneq
Date: Sat, 30 Jun 2018 07:56
8 lines
1339 bytes
Zwykle dla Visuala z moich projektach nie lubię kompilowanych nagłówków 
i wyrzucam stdafx.h i cpp.
Jednak chodzi mi o duże projekty jak llvm, które się długo kompilują i GCC.
Czy GCC w odróżnieniu od Visuala nie potrzebuje zmian w kodzie (stdafx) 
tylko używa plików .gch? Czytałem że muszą być w tym samym katalogu co 
.h, to nie tylko śmieci w źródłach ale stanowi kłopot dla tworzenia .bch 
systemowych nagłówków. Jak to jest?
Jaka komenda GCC tworzy .gch? A Clang?
Re: Kompilowane nagłówki z GCC (i Clang)
#309717
Author: Borneq
Date: Sat, 30 Jun 2018 07:59
4 lines
980 bytes
W dniu 30.06.2018 o 09:56, Borneq pisze:
> kłopot dla tworzenia .bch 

tu też .gch
Re: Kompilowane nagłówki z GCC (i Clang)
#309718
Author: Borneq
Date: Sat, 30 Jun 2018 09:06
33 lines
2124 bytes
Coś mi się nie zgadza:
mam gch_header.h,
#include "llvm-c/Analysis.h"
#include "llvm-c/Initialization.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"
#include "llvm/InitializePasses.h"
#include "llvm/PassRegistry.h"
#include "llvm/Support/raw_ostream.h"
#include <cstring>

wołam:
gcc -xc++ gch_header.h -I/home/andrzej/devel/llvm/include/ 
-I/home/andrzej/devel/llvm/mybuilddir/include/

tym razem są błędy
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In 
function `_start':
(.text+0x20): undefined reference to `main'
/tmp/cc8wVfVm.o:(.data.rel+0x0): undefined reference to 
`llvm::EnableABIBreakingChecks'
collect2: error: ld returned 1 exit status

podczas gdy inny prosty header mający tylko #include<stdio.h> dawał 1.9 
megowy .gch bez błędów.
dlaczego tu chce linkować?
natomiast gcc gch_header.h -I/home/andrzej/devel/llvm/include/ 
-I/home/andrzej/devel/llvm/mybuilddir/include/
bez -xc++ tworzy mi malutki .gch oraz daje błędy c++

Jestem więc zakleszczony, bo bez -xc++ przyjmuje język c zamiast c++, a 
z tym -xc++ przyjmuje że to plik C++ a nie nagłówek C++.
jak by było -xhpp czy coś takiego...
Re: Kompilowane nagłówki z GCC (i Clang)
#309719
Author: Borneq
Date: Sat, 30 Jun 2018 11:03
12 lines
1492 bytes
W dniu 30.06.2018 o 11:06, Borneq pisze:
> Jestem więc zakleszczony, bo bez -xc++ przyjmuje język c zamiast c++, a 
> z tym -xc++ przyjmuje że to plik C++ a nie nagłówek C++.
> jak by było -xhpp czy coś takiego...

g++ zamiast gcc i powstaje wielki .gch
z clangiem są większe kłopoty

Ale prekompilowane nagłówki nie mają większego sensu, bo choć mamy plik 
kilka KB, z nagłówkami 2.5 MB, to prekompilowany ma aż 105 MB i wcale 
szybciej nie działa gdy go się dołącza.
Trzeba czekać na moduły.
Re: Kompilowane nagłówki z GCC (i Clang)
#309720
Author: bartekltg
Date: Sun, 01 Jul 2018 00:53
16 lines
1622 bytes
On 30.06.2018 09:56, Borneq wrote:
> Zwykle dla Visuala z moich projektach nie lubię kompilowanych nagłówków 
> i wyrzucam stdafx.h i cpp.
> Jednak chodzi mi o duże projekty jak llvm, które się długo kompilują i GCC.
> Czy GCC w odróżnieniu od Visuala nie potrzebuje zmian w kodzie (stdafx) 
> tylko używa plików .gch? Czytałem że muszą być w tym samym katalogu co 
> .h, to nie tylko śmieci w źródłach ale stanowi kłopot dla tworzenia .bch 
> systemowych nagłówków. Jak to jest?
> Jaka komenda GCC tworzy .gch? A Clang?

Nie jestem pewien, co wynika z dalszego rozwoju tego wątku,
ale tu króciutki tutorial:
http://itscompiling.eu/2017/01/12/precompiled-headers-cpp-compilation/

pzdr
bartekltg
Re: Kompilowane nagłówki z GCC (i Clang)
#309721
Author: Borneq
Date: Sun, 01 Jul 2018 07:24
7 lines
1291 bytes
W dniu 01.07.2018 o 02:53, bartekltg pisze:
> Nie jestem pewien, co wynika z dalszego rozwoju tego wątku,
> ale tu króciutki tutorial:
> http://itscompiling.eu/2017/01/12/precompiled-headers-cpp-compilation/

na testach wyszło, że pliki skompilowane pliki nagłówkowe są tak wielkie 
, że aż nie ma przyśpieszenia. Trzeba będzie poczekać na moduły.
Re: Kompilowane nagłówki z GCC (i Clang)
#309722
Author: Borneq
Date: Sun, 01 Jul 2018 07:45
27 lines
1975 bytes
W dniu 01.07.2018 o 09:24, Borneq pisze:
> na testach wyszło, że pliki skompilowane pliki nagłówkowe są tak wielkie 
> , że aż nie ma przyśpieszenia. Trzeba będzie poczekać na moduły.

Nie, to z innego powodu nie było zysku:
uznał że plik gch jest zły i go nie używał.
Analysis_my.cpp:4:24: warning: gch_header.h.gch: not used because 
`__STRICT_ANSI__' not defined [-Winvalid-pch]
  #include "gch_header.h"

jak dodałem #define __STRICT_ANSI__ 1
Analysis_my.cpp:4:24: warning: gch_header.h.gch: not used because 
`__GLIBCXX_BITSIZE_INT_N_0' is defined [-Winvalid-pch]
  #include "gch_header.h"


To się dzieje, gdy chciałem użyć pliku nagłówkowego:
#include "llvm-c/Analysis.h"
#include "llvm-c/Initialization.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"
#include "llvm/InitializePasses.h"
#include "llvm/PassRegistry.h"
#include "llvm/Support/raw_ostream.h"
#include <cstring>

aby zobaczyć czy da radę przyśpieszyć w ten sposób budowę LLVM
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads