Antecedentes: Hace¿Existe un g ++ (Linux) equivalente a/fp: precise y/fp: flags rápidos utilizados en Visual Studio?
muchos años, heredó una base de código que estaba utilizando la (VC++) flag '/ fp: rápido' Visual Studio para producir un código más rápido en una biblioteca de cálculo pesado en particular. Desafortunadamente, '/ fp: fast' produjo resultados ligeramente diferentes a la misma biblioteca bajo un compilador diferente (Borland C++). Como necesitábamos producir exactamente los mismos resultados, cambié a '/ fp: precise', que funcionó bien y desde entonces todo ha sido color de rosa. Sin embargo, ahora estoy compilando la misma biblioteca con g ++ en uBuntu Linux 10.04 y veo un comportamiento similar, y me pregunto si podría tener una causa similar. Los resultados numéricos de mi compilación de g ++ son ligeramente diferentes de los resultados numéricos de mi compilación de VC++. Esto me lleva a mi pregunta:
Pregunta:
¿Tiene g ++ tener parámetros equivalentes o similares a la 'FP: rápido' y 'FP: precisas' opciones en VC++? (? Y ¿qué es esto que quiero para activar el 'fp: precisa'. Equivalente)
más detallado de la información:
puedo compilar usando 'hacer', que llama g ++. Por lo que puedo decir (los archivos make son un poco crípticos, y no fueron escritos por mí) los únicos parámetros agregados a la llamada g ++ son los "normales" (incluyen las carpetas y los archivos para compilar) y -fPIC (No estoy seguro de lo que hace este cambio, no lo veo en la página 'hombre').
Los únicos parámetros relevantes en 'man g ++' parecen ser activar las opciones de optimización. (por ejemplo, optimizaciones de seguridad-matemáticas). Sin embargo, no creo que encienda nada, solo quiero desactivar la optimización relevante.
Probé versiones de Release y Debug, VC++ da los mismos resultados para release y debug, y g ++ da los mismos resultados para release y depuración, pero no puedo obtener la misma versión que la versión de g ++ Versión VC++.
Encontré el significado de -fPIC después de un poco más de google: -fPIC Si es compatible con la máquina de destino, emita código independiente de posición, adecuado para enlaces dinámicos, incluso si (3, n) ramas necesitan grandes desplazamientos. – Boinst
Esto puede consumir mucho tiempo, pero vale la pena el esfuerzo: ¿puedes intentar señalar la instrucción más antigua (o al menos la línea de código) donde algunos cálculos divergen entre MSVC y gcc? –
Sí, estoy trabajando en su sugerencia. Desafortunadamente, estoy un poco en Linux n00b, ¡así que me lleva algo de tiempo reunir todo! – Boinst