Compiling trunk on Ubuntu 16 LTS fails

15 views
Skip to first unread message

Jeff Kaufman

unread,
Nov 28, 2016, 9:53:41 AM11/28/16
to Maksim Orlovich, pagespeed-dev
Maks,

I'm making sure we can build things on Ubuntu 16 LTS, and I'm seeing
this failure when I build PSOL. I think it might be because g++ is
5.4.0 and that changes how c++11 support works?

cd /home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/pagespeed/automatic
&& make --no-print-directory OBJDIR=/tmp/instaweb.6UxgDV \
MOD_PAGESPEED_ROOT=/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed
\
OUTPUT_DIR=/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug
\
BUILDTYPE=Debug \
CXXFLAGS=-Wtype-limits \
all
cd /home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed &&
make --no-print-directory BUILDTYPE=Debug
make[2]: Nothing to be done for 'all'.
make --no-print-directory examples
g++ -Wtype-limits -std=gnu++0x -o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter_main.o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/pagespeed_automatic.a
-lpthread -lrt
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter_main.o:
In function `main':
static_rewriter_main.cc:(.text+0x14d): undefined reference to
`net_instaweb::StrCat(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >)'
static_rewriter_main.cc:(.text+0x1cd): undefined reference to
`net_instaweb::StrCat(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >)'
static_rewriter_main.cc:(.text+0x251): undefined reference to
`net_instaweb::StrCat(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >)'
static_rewriter_main.cc:(.text+0x45f): undefined reference to
`net_instaweb::FileSystem::WriteFileAtomic(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
net_instaweb::MessageHandler*)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter_main.o:
In function `base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>::BasicStringPiece(char const*)':
static_rewriter_main.cc:(.text._ZN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2EPKc[_ZN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC5EPKc]+0x1f):
undefined reference to
`base::internal::StringPieceDetail<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>::StringPieceDetail(char const*)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter_main.o:
In function `base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>::BasicStringPiece(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)':
static_rewriter_main.cc:(.text._ZN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS6_[_ZN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC5ERKS6_]+0x1f):
undefined reference to
`base::internal::StringPieceDetail<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>::StringPieceDetail(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:
In function `net_instaweb::FileRewriter::SetupCaches(net_instaweb::ServerContext*)':
static_rewriter.cc:(.text+0x627): undefined reference to
`net_instaweb::PropertyCache::InitCohortStats(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
net_instaweb::Statistics*)'
static_rewriter.cc:(.text+0x683): undefined reference to
`net_instaweb::ServerContext::AddCohort(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
net_instaweb::PropertyCache*)'
static_rewriter.cc:(.text+0x6ed): undefined reference to
`net_instaweb::PropertyCache::InitCohortStats(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
net_instaweb::Statistics*)'
static_rewriter.cc:(.text+0x749): undefined reference to
`net_instaweb::ServerContext::AddCohort(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
net_instaweb::PropertyCache*)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:
In function `net_instaweb::StaticRewriter::StaticRewriter(net_instaweb::ProcessContext
const&, int*, char***)':
static_rewriter.cc:(.text+0xb89): undefined reference to
`net_instaweb::RewriteDriverFactory::set_slurp_directory(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:
In function `net_instaweb::StaticRewriter::ParseText(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
net_instaweb::Writer*)':
static_rewriter.cc:(.text+0xe0e): undefined reference to
`net_instaweb::Headers<net_instaweb::HttpRequestHeaders>::Add(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&)'
static_rewriter.cc:(.text+0xe47): undefined reference to
`net_instaweb::Headers<net_instaweb::HttpRequestHeaders>::Add(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&)'
static_rewriter.cc:(.text+0xe84): undefined reference to
`net_instaweb::RewriteDriverFactory::set_filename_prefix(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >)'
static_rewriter.cc:(.text+0xee9): undefined reference to
`base::internal::StringPieceDetail<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::as_string() const'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:(.rodata+0x2d8):
undefined reference to
`net_instaweb::ServerContext::CreateCustomCacheFetcher(net_instaweb::RewriteOptions
const*, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&,
net_instaweb::CacheUrlAsyncFetcher::AsyncOpHooks*,
net_instaweb::UrlAsyncFetcher*)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:(.rodata+0x300):
undefined reference to
`net_instaweb::ServerContext::FormatOption(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:
In function `net_instaweb::HtmlParse::ParseText(base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > const&)':
static_rewriter.cc:(.text._ZN12net_instaweb9HtmlParse9ParseTextERKN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE[_ZN12net_instaweb9HtmlParse9ParseTextERKN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE]+0x29):
undefined reference to
`base::internal::StringPieceDetail<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::size() const'
static_rewriter.cc:(.text._ZN12net_instaweb9HtmlParse9ParseTextERKN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE[_ZN12net_instaweb9HtmlParse9ParseTextERKN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE]+0x38):
undefined reference to
`base::internal::StringPieceDetail<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::data() const'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:(.rodata._ZTVN12net_instaweb12FileRewriterE[_ZTVN12net_instaweb12FileRewriterE]+0x118):
undefined reference to
`net_instaweb::RewriteDriverFactory::CreateWorkerPool(net_instaweb::RewriteDriverFactory::WorkerPoolCategory,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:(.rodata._ZTVN12net_instaweb12FileRewriterE[_ZTVN12net_instaweb12FileRewriterE]+0x138):
undefined reference to
`net_instaweb::RewriteDriverFactory::LockFilePrefix[abi:cxx11]()'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter.o:(.rodata._ZTVN12net_instaweb28BeaconCriticalSelectorFinderE[_ZTVN12net_instaweb28BeaconCriticalSelectorFinderE]+0x20):
undefined reference to
`net_instaweb::CriticalSelectorFinder::WriteCriticalSelectorsToPropertyCache(std::set<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,
std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
net_instaweb::RewriteDriver*)'
collect2: error: ld returned 1 exit status
Makefile:283: recipe for target
'/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter'
failed
make[2]: *** [/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter]
Error 1
Makefile:255: recipe for target 'all' failed
make[1]: *** [all] Error 2
Makefile:284: recipe for target 'apache_debug_psol' failed
make: *** [apache_debug_psol] Error 2

Maksim Orlovich

unread,
Nov 28, 2016, 9:59:22 AM11/28/16
to Jeff Kaufman, pagespeed-dev
std::__cxx11::basic_string <--- The __cxx11 bit indicates we are not
using -D_GLIBCXX_USE_CXX11_ABI=0, which we should be for our usual way
of building things.

Jeff Kaufman

unread,
Nov 28, 2016, 10:26:45 AM11/28/16
to Maksim Orlovich, pagespeed-dev
Hmm. build/common.gypi has _GLIBCXX_USE_CXX11_ABI=0 but I think that
doesn't apply to the PSOL build?

Here's a patch that adds it to the PSOL Makefile:

```
diff --git a/pagespeed/automatic/Makefile b/pagespeed/automatic/Makefile
index e277671..156429e 100644
--- a/pagespeed/automatic/Makefile
+++ b/pagespeed/automatic/Makefile
@@ -258,7 +258,7 @@ all : build_libraries
# Flags used to compile static_rewriter.cc. Note that these are not
# the flags used to compile pagespeed_automatic, which is compiled
# with either BUILDTYPE=Release or BUILDTYPE=Debug
-override CXXFLAGS := $(CXXFLAGS) -std=gnu++0x
+override CXXFLAGS := $(CXXFLAGS) -std=gnu++0x -D_GLIBCXX_USE_CXX11_ABI=0

$(PSOL) : $(LIBS)
@echo Merging libraries, logs in $(MERGE_LOG) ...
```

The patch doesn't fix the error though:

g++ -Wtype-limits -std=gnu++0x -D_GLIBCXX_USE_CXX11_ABI=0 -o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter
/ho
me/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter_main.o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespee
sicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >)'
static_rewriter_main.cc:(.text+0x45f): undefined reference to
`net_instaweb::FileSystem::WriteFileAtomic(base::BasicStringPiece<std::__cxx11::basic_stri
ng<char, std::char_traits<char>, std::allocator<char> > > const&,
base::BasicStringPiece<std::__cxx11::basic_string<char,
std::char_traits<char>, std::a
llocator<char> > > const&, net_instaweb::MessageHandler*)'
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter_main.o:
In function `base::BasicStringPiece<std::__cxx11::basic_
string<char, std::char_traits<char>, std::allocator<char> >
>::BasicStringPiece(char const*)':
static_rewriter_main.cc:(.text._ZN4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2EPKc[_ZN4base16BasicStringPieceINSt7__c
xx1112basic_stringIcSt11char_traitsIcESaIcEEEEC5EPKc]+0x1f): undefined
reference to `base::internal::StringPieceDetail<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>::StringPieceDetail(char const*)'
...
> --
> You received this message because you are subscribed to the Google Groups "pagespeed-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to pagespeed-de...@googlegroups.com.
> To post to this group, send email to pagesp...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/pagespeed-dev/CAHRWggQzbRaYPsc_rup-V0ifyaOREDUqDytQZnLeN3DjkDgvxA%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

Maksim Orlovich

unread,
Nov 28, 2016, 10:39:18 AM11/28/16
to Jeff Kaufman, pagespeed-dev
The change does look correct, and it's very much believable that a
spot was missing since this was pretty much done by just
hand-inspecting make V = 1 output, as it's a no-op for gcc < 5,
and I had no gcc5 system when the change was made.

As for the error :remove static_rewriter_main.o and try again?

Jeff Kaufman

unread,
Nov 28, 2016, 10:42:14 AM11/28/16
to Maksim Orlovich, pagespeed-dev
Same error after running "make clean" which includes that .o file:

pagespeed/automatic$ make clean
rm -f /home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/pagespeed/automatic/static_rewriter
/home/jefftk/ngx_pagespeed/testing-dependencies/
mod_pagespeed/pagespeed/automatic/static_rewriter
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/pagespeed/automatic/static_rewriter_main
.o /home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/pagespeed/automatic/static_rewriter.o
/home/jefftk/ngx_pagespeed/testing-dependencies/m
od_pagespeed/pagespeed/automatic/pagespeed_automatic.a
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/pagespeed/automatic/collapse_whites
pace.html /home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/pagespeed/automatic/merge.log
/home/jefftk/ngx_pagespeed/testing-dependencies/mo
d_pagespeed/pagespeed/automatic/rename.log

Maksim Orlovich

unread,
Nov 28, 2016, 1:04:11 PM11/28/16
to Jeff Kaufman, pagespeed-dev
what's the command line compiling that .o?

Jeff Kaufman

unread,
Nov 28, 2016, 1:05:49 PM11/28/16
to Maksim Orlovich, pagespeed-dev
I think it's:

g++ -Wtype-limits -std=gnu++0x -D_GLIBCXX_USE_CXX11_ABI=0 -o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/static_rewriter_main.o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespee
d/out/Debug/static_rewriter.o
/home/jefftk/ngx_pagespeed/testing-dependencies/mod_pagespeed/out/Debug/pagespeed_automatic.a
-lpthread -lrt

On Mon, Nov 28, 2016 at 1:04 PM, 'Maksim Orlovich' via pagespeed-dev
> To view this discussion on the web visit https://groups.google.com/d/msgid/pagespeed-dev/CAHRWggTL2D99evLhQhJWCwMp23EH-DqWXvdGMFx9uOxvLZNU6w%40mail.gmail.com.

Maksim Orlovich

unread,
Nov 28, 2016, 1:18:25 PM11/28/16
to Jeff Kaufman, pagespeed-dev
That's the link line, not compile line. -D doesn't do much on those.

Jeff Kaufman

unread,
Nov 28, 2016, 1:25:28 PM11/28/16
to Maksim Orlovich, pagespeed-dev
It looks like blowing the whole thing away and rebuilding with my
patch worked. So it sounds like the problem was that "make clean"
didn't clean far enough.

I'm set now!

On Mon, Nov 28, 2016 at 1:18 PM, 'Maksim Orlovich' via pagespeed-dev
> To view this discussion on the web visit https://groups.google.com/d/msgid/pagespeed-dev/CAHRWggSBKTBcMOasR8WVPziSBxoZPdrvWmQozj%3DHQysJOQrLQQ%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages