Neste ponto do asterisco, você está tentando construir uma biblioteca dinâmica. Como essa biblioteca dinâmica pode ser carregada em qualquer local da memória, tudo precisa ser relocável. A flag -fPIC
significa Position Independent Code, o código é feito para ser independente da localização da carga - carregada em qualquer lugar.
Como parte deste asterisk dynamic lib build, ele está tentando trazer o interpretador Lua. Uma vez que está trazendo para uma biblioteca dinâmica, precisa de tudo compilado PIC. Mas você está usando uma biblioteca estática de lua, que não foi construída com o -fPIC. Ele rejeita isso, já que os objetos lua na biblioteca estática não podem ser realocados.
BTW: é por isso que adicionar -fPIC
à compilação do asterisco não ajudará. Não são seus objetos de código de asterisco que são incompatíveis (o que -fPIC pode afetar), mas liblua.a, especificamente os objetos transportados por liblua.a (por exemplo, lapi.o). Além disso, você está construindo uma biblioteca dinâmica nesse ponto e tenho certeza de que você já tem sinalizadores de código relocáveis, como -fPIC, para os objetos de asterisco que você está tentando reunir naquele ponto.
Eu vejo três soluções.
-
Uma é soltar lua da sua construção. Se você não precisa especificamente e estava pensando mais que "isso pode ser divertido para brincar mais tarde" você pode e não perder os recursos desejados.
-
Outra é obter uma versão dinâmica de liblua,
liblua.so
, uma que possa ser referenciada em sua construção de asterisco. Eu não conheço sua distro, então não posso dizer como consegui-lo. -
O outro, mais problemático, é reconstruir lua e liblua.a com -fPIC. Você teria problemas de compatibilidade, talvez a partir de flags de construção inconsistentes (o que você fez e o que mais está no disco), então acho que encontrar um liblua.so para corresponder à sua lua atualmente construída é a melhor opção.
Se você encontrar liblua.so, você pode querer olhar para o sinalizador de vinculação '-rpath' para isso, especificamente '-Wl, -rpath, / path / to / lua / libs'