Intento usar las nuevas funciones de c ++ 1z en la cabeza del desarrollo dentro de gcc 6.0.
Si pruebo este pequeño ejemplo:
#include <iostream>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
int main()
{
fs::path p1 = "/home/pete/checkit";
std::cout << "p1 = " << p1 << std::endl;
}
Tengo:
/ opt / linux-gnu_6-20151011 / bin / g ++ --std = c ++ 1z main.cpp -O2 -g -o ir /tmp/ccaGzqFO.o: En la función \ `std :: experimental :: filesystem :: v1 :: __ cxx11 :: path :: path (char const (&) [36]) ': /opt/linux-gnu_6-20151011/include/c++/6.0.0/experimental/bits/fs_path.h:167: referencia indefinida a `std :: experimental :: filesystem :: v1 :: __ cxx11 :: path :: _ M_split_cmpts () ' collect2: error: ld devolvió 1 estado de salida
La versión gcc es la instantánea linux-gnu_6-20151011
¿Alguna sugerencia de cómo vincular las nuevas funciones de c ++ 1z?
c++ -lstd++fs main.cpp
. Estoy utilizandogcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC)
-lstdc++fs
tiene que estar al final de la línea (al menos después del archivo fuente). No entiendo por qué algunos-lxxx
necesitan estar al final y otros no.