-
1. Data: 2022-11-16 16:40:15
Temat: undefined reference to __asan przy kompilacja pugixml w Win10
Od: Jivanmukta <j...@p...onet.pl>
Przy próbie kompilacji w Win10 biblioteki pugixml do pugixml.obj mam błędy:
undefined reference to `__asan.........
Mój program w C++ używa tej biblioteki. Pod Linuxem nie mam tych
komunikatów.
Katalog pugixml/ zawiera plik Makefile. Czy mam coś zmienić w Makefile?
.SUFFIXES:
MAKEFLAGS+=-r
config=debug
defines=standard
cxxstd=c++11
# set cxxstd=any to disable use of -std=...
BUILD=build/make-$(CXX)-$(config)-$(defines)-$(cxxst
d)
SOURCES=src/pugixml.cpp $(filter-out tests/fuzz_%,$(wildcard tests/*.cpp))
EXECUTABLE=$(BUILD)/test
VERSION=$(shell sed -n 's/.*version \(.*\).*/\1/p' src/pugiconfig.hpp)
RELEASE=$(filter-out scripts/archive.py docs/%.adoc,$(shell git ls-files
docs scripts src CMakeLists.txt LICENSE.md readme.txt))
CXXFLAGS=-g -Wall -Wextra -Werror -pedantic -Wundef -Wshadow
-Wcast-align -Wcast-qual -Wold-style-cast -Wdouble-promotion
LDFLAGS=
ifeq ($(config),release)
CXXFLAGS+=-O3 -DNDEBUG
endif
ifeq ($(config),coverage)
CXXFLAGS+=-coverage
LDFLAGS+=-coverage
endif
ifeq ($(config),sanitize)
CXXFLAGS+=-fsanitize=address,undefined
-fno-sanitize=float-divide-by-zero,float-cast-overfl
ow
-fno-sanitize-recover=all
LDFLAGS+=-fsanitize=address,undefined
endif
ifeq ($(config),analyze)
CXXFLAGS+=--analyze
endif
ifneq ($(defines),standard)
COMMA=,
CXXFLAGS+=-D $(subst $(COMMA), -D ,$(defines))
endif
ifneq ($(findstring PUGIXML_NO_EXCEPTIONS,$(defines)),)
CXXFLAGS+=-fno-exceptions
endif
ifneq ($(cxxstd),any)
CXXFLAGS+=-std=$(cxxstd)
endif
OBJECTS=$(SOURCES:%=$(BUILD)/%.o)
all: $(EXECUTABLE)
ifeq ($(config),coverage)
test: $(EXECUTABLE)
-@find $(BUILD) -name '*.gcda' -exec rm {} +
./$(EXECUTABLE)
@gcov -b -o $(BUILD)/src/ pugixml.cpp.gcda | sed -e '/./{H;$!d;}' -e
'x;/pugixml.cpp/!d;'
@find . -name '*.gcov' -and -not -name 'pugixml.cpp.gcov' -exec rm {} +
@sed -i -e "s/#####\(.*\)\(\/\/ unreachable.*\)/ 1\1\2/"
pugixml.cpp.gcov
else
test: $(EXECUTABLE)
./$(EXECUTABLE)
endif
fuzz_%: $(BUILD)/fuzz_%
@mkdir -p build/$@
$< build/$@ tests/data_fuzz_$* -max_len=1024 -dict=tests/fuzz_$*.dict
clean:
rm -rf $(BUILD)
release: build/pugixml-$(VERSION).tar.gz build/pugixml-$(VERSION).zip
docs: docs/quickstart.html docs/manual.html
build/pugixml-%: .FORCE | $(RELEASE)
@mkdir -p $(BUILD)
TIMESTAMP=`git show v$(VERSION) -s --format=%ct` && python
scripts/archive.py $@ pugixml-$(VERSION) $$TIMESTAMP $|
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $@
$(BUILD)/fuzz_%: tests/fuzz_%.cpp src/pugixml.cpp
@mkdir -p $(BUILD)
$(CXX) $(CXXFLAGS) -fsanitize=address,fuzzer $^ -o $@
$(BUILD)/%.o: %
@mkdir -p $(dir $@)
$(CXX) $< $(CXXFLAGS) -c -MMD -MP -o $@
-include $(OBJECTS:.o=.d)
.SECONDEXPANSION:
docs/%.html: docs/%.adoc $$(shell sed -n
's/include\:\:\(.*\)\[.*/docs\/\1/p' docs/%.adoc)
asciidoctor -b html5 -a version=$(VERSION) $< -o $@
.PHONY: all test clean release .FORCE
--
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie
antywirusowe AVG.
www.avg.com
-
2. Data: 2022-11-16 20:40:08
Temat: Re: undefined reference to __asan przy kompilacja pugixml w Win10
Od: Mateusz Viste <m...@x...invalid>
2022-11-16 o 16:40 +0100, Jivanmukta napisał:
> Przy próbie kompilacji w Win10 biblioteki pugixml do pugixml.obj mam
> błędy: undefined reference to `__asan.........
> Mój program w C++ używa tej biblioteki. Pod Linuxem nie mam tych
> komunikatów.
Strzelam: asan_xxxx to funkcje odwołujące się do biblioteki
AddressSanitizer, a ty tej biblioteki nie masz?
Szybko googlając wyszukiwarka podpowiada też:
"AddressSanitizer is a part of LLVM starting with version 3.1 and a
part of GCC starting with version 4.8"
Mateusz
-
3. Data: 2022-11-18 11:57:08
Temat: Re: undefined reference to __asan przy kompilacja pugixml w Win10
Od: Jivanmukta <j...@p...onet.pl>
W dniu 16.11.2022 o 20:40, Mateusz Viste pisze:
> 2022-11-16 o 16:40 +0100, Jivanmukta napisał:
>> Przy próbie kompilacji w Win10 biblioteki pugixml do pugixml.obj mam
>> błędy: undefined reference to `__asan.........
>> Mój program w C++ używa tej biblioteki. Pod Linuxem nie mam tych
>> komunikatów.
>
> Strzelam: asan_xxxx to funkcje odwołujące się do biblioteki
> AddressSanitizer, a ty tej biblioteki nie masz?
>
> Szybko googlając wyszukiwarka podpowiada też:
> "AddressSanitizer is a part of LLVM starting with version 3.1 and a
> part of GCC starting with version 4.8"
>
> Mateusz
>
Mimo, że zamieniłem:
ifeq ($(config),sanitize)
CXXFLAGS+=-fsanitize=address,undefined
-fno-sanitize=float-divide-by-zero,float-cast-overfl
ow
-fno-sanitize-recover=all
LDFLAGS+=-fsanitize=address,undefined
endif
na:
ifeq ($(config),sanitize)
# CXXFLAGS+=-fsanitize=address,undefined
-fno-sanitize=float-divide-by-zero,float-cast-overfl
ow
-fno-sanitize-recover=all
# LDFLAGS+=-fsanitize=address,undefined
endif
(tzn. wykomentowałem) nadal mam ten błąd undefined reference.
Nie wiem jak poprawić Makefile, żeby nie było tego błędu.
--
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie
antywirusowe AVG.
www.avg.com