dependência da biblioteca std :: atomic (gcc 4.7.3)
Eu tenho tentado compilar com std :: atomic e estou recebendo referências não resolvidas para __atomic_load, __atomic_store e __atomic_store_16.
Eu sei que em uma versão posterior do gcc (4.8+?) Você inclui -latomic, mas estou compilando com o gcc 4.7.3; Tentei adicionar -latomic_ops e -latomic_ops_gpl, mas nenhum deles parece fazer muito.
Estou instalando o gcc 4.8.1 agora, mas tenho uma plataforma de lançamento que realmente precisará ser compilada para a 4.7.3.
Muito Obrigado.
Edit: Ok, aqui está um código que resulta no problema que tenho:
atomics.cpp
#include <atomic>
#include <stdint.h>
struct dataStruct {
int a;
uint16_t b;
float c;
dataStruct(int ai, uint16_t bi, float ci) noexcept : a(ai), b(bi), c(ci) {
}
dataStruct() noexcept : dataStruct(0,0,0) {
}
};
int main() {
std::atomic<dataStruct> atomicValue;
atomicValue = dataStruct(10, 0, 0);
return atomicValue.load().b;
}
Com "g ++ - 4.8.1 * .cpp -std = c ++ 0x -latomic", isso compila bem.
Com "g ++ - 4.7.3 * .cpp -std = c ++ 0x -pthread -lpthread -latomic_ops", ele falha com o seguinte:
/tmp/ccQp8MJ2.o: In function `std::atomic<dataStruct>::load(std::memory_order) const':
atomics.cpp:(.text._ZNKSt6atomicI10dataStructE4loadESt12memory_order[_ZNKSt6atomicI10dataStructE4loadESt12memory_order]+0x2f): undefined reference to `__atomic_load'
/tmp/ccQp8MJ2.o: In function `std::atomic<dataStruct>::store(dataStruct, std::memory_order)':
atomics.cpp:(.text._ZNSt6atomicI10dataStructE5storeES0_St12memory_order[_ZNSt6atomicI10dataStructE5storeES0_St12memory_order]+0x35): undefined reference to `__atomic_store'
collect2: error: ld returned 1 exit status