Skip to main content
Home
for DLMS smart meters
Open source solutions for DLMS smart metering

Main navigation

  • Home
  • Products
  • About us
  • Open Source
  • Community
  • Forum
  • Downloads
User account menu
  • Log in

Breadcrumb

  1. Home
  2. Cross Compilation Issues For ARM

Cross Compilation issues for ARM

Forum Rules

Before commenting read Forum rules

Don't comment the topic if you have a new question.

You can create a new topic selecting correct category from Gurux Forum and then create a new topic selecting "New Topic" from the top left.

By Nagendra , 25 June, 2021
Forums
Gurux.DLMS

Dear Mikko,

I am using "arm-oe-linux-gnueabi-gcc -E -march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=$SDKTARGETSYSROOT" compiler wherein I am facing issue in linking the application folder.
I am using the following
LINKER = arm-oe-linux-gnueabi-gcc -E -march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=$SDKTARGETSYSROOT -o instead of
LINKER = g++ -o(which was present in example provided).

i am facing this error:-
Compiled src/communication.cpp successfully!
Compiled src/GuruxDLMSClientExample.cpp successfully!
arm-oe-linux-gnueabi-gcc: warning: obj/communication.o: linker input file unused because linking not done
arm-oe-linux-gnueabi-gcc: warning: obj/GuruxDLMSClientExample.o: linker input file unused because linking not done
Linking complete!

I am unable to get gurux.dlms.client.bin file in the bin folder. What would be the issue?

Regards
Nagendra Babu

Profile picture for user Kurumi

Kurumi

5 years 1 month ago

Hi Nagendra,

Hi Nagendra,

Have you created obj and bin folders? You also need to run make in the development folder first to make guruxdlms.lib

BR,
Mikko

Nagendra

5 years ago

Dear Mikko,

Dear Mikko,

I have used this compiler "arm-oe-linux-gnueabi-g++ -march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=$SDKTARGETSYSROOT"

and i am facing this below issue while compiling development folder.
Compiled src/GXAdjacentCell.cpp successfully!
In file included from src/../include/GXPlcSettings.h:41:0,
from src/../include/GXDLMSSettings.h:41,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSPlcRegister.h:44:5: error: 'uint16_t' does not name a type
uint16_t m_AllowedTimeSlots;
^
src/../include/GXDLMSPlcRegister.h:59:5: error: 'uint16_t' does not name a type
uint16_t GetAllowedTimeSlots()
^
src/../include/GXDLMSPlcRegister.h:64:30: error: 'uint16_t' has not been declared
void SetAllowedTimeSlots(uint16_t value)
^
src/../include/GXDLMSPlcRegister.h: In member function 'void CGXDLMSPlcRegister::SetAllowedTimeSlots(int)':
src/../include/GXDLMSPlcRegister.h:66:9: error: 'm_AllowedTimeSlots' was not declared in this scope
m_AllowedTimeSlots = value;
^
In file included from src/../include/GXPlcSettings.h:42:0,
from src/../include/GXDLMSSettings.h:41,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSPlcMeterInfo.h: At global scope:
src/../include/GXDLMSPlcMeterInfo.h:48:5: error: 'uint16_t' does not name a type
uint16_t m_SourceAddress;
^
src/../include/GXDLMSPlcMeterInfo.h:53:5: error: 'uint16_t' does not name a type
uint16_t m_DestinationAddress;
^
src/../include/GXDLMSPlcMeterInfo.h:65:5: error: 'uint16_t' does not name a type
uint16_t GetSourceAddress()
^
src/../include/GXDLMSPlcMeterInfo.h:70:27: error: 'uint16_t' has not been declared
void SetSourceAddress(uint16_t value)
^
src/../include/GXDLMSPlcMeterInfo.h:78:5: error: 'uint16_t' does not name a type
uint16_t GetDestinationAddress()
^
src/../include/GXDLMSPlcMeterInfo.h:83:32: error: 'uint16_t' has not been declared
void SetDestinationAddress(uint16_t value)
^
src/../include/GXDLMSPlcMeterInfo.h: In member function 'void CGXDLMSPlcMeterInfo::SetSourceAddress(int)':
src/../include/GXDLMSPlcMeterInfo.h:72:9: error: 'm_SourceAddress' was not declared in this scope
m_SourceAddress = value;
^
src/../include/GXDLMSPlcMeterInfo.h: In member function 'void CGXDLMSPlcMeterInfo::SetDestinationAddress(int)':
src/../include/GXDLMSPlcMeterInfo.h:85:9: error: 'm_DestinationAddress' was not declared in this scope
m_DestinationAddress = value;
^
In file included from src/../include/GXDLMSSettings.h:41:0,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXPlcSettings.h: At global scope:
src/../include/GXPlcSettings.h:74:5: error: 'uint16_t' does not name a type
uint16_t m_MacSourceAddress;
^
src/../include/GXPlcSettings.h:78:5: error: 'uint16_t' does not name a type
uint16_t m_MacDestinationAddress;
^
src/../include/GXPlcSettings.h:86:5: error: 'uint16_t' does not name a type
uint16_t m_AllowedTimeSlots;
^
src/../include/GXPlcSettings.h:124:5: error: 'uint16_t' does not name a type
uint16_t GetMacSourceAddress();
^
src/../include/GXPlcSettings.h:125:30: error: 'uint16_t' has not been declared
void SetMacSourceAddress(uint16_t value);
^
src/../include/GXPlcSettings.h:130:5: error: 'uint16_t' does not name a type
uint16_t GetMacDestinationAddress();
^
src/../include/GXPlcSettings.h:131:35: error: 'uint16_t' has not been declared
void SetMacDestinationAddress(uint16_t value);
^
src/../include/GXPlcSettings.h:142:5: error: 'uint16_t' does not name a type
uint16_t GetAllowedTimeSlots();
^
src/../include/GXPlcSettings.h:143:30: error: 'uint16_t' has not been declared
void SetAllowedTimeSlots(uint16_t value);
^
src/../include/GXPlcSettings.h:182:45: error: 'uint16_t' has not been declared
int ParseDiscover(CGXByteBuffer& value, uint16_t sa, uint16_t da, std::vector<CGXDLMSPlcMeterInfo>& list);
^
src/../include/GXPlcSettings.h:182:58: error: 'uint16_t' has not been declared
int ParseDiscover(CGXByteBuffer& value, uint16_t sa, uint16_t da, std::vector<CGXDLMSPlcMeterInfo>& list);
^
In file included from src/../include/GXDLMSSettings.h:43:0,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXCipher.h:84:20: error: 'uint32_t' has not been declared
static int Int(uint32_t* rk,
^
src/../include/GXCipher.h:207:9: error: 'uint64_t' has not been declared
uint64_t& InvocationCounter);
^
In file included from src/../include/GXAPDU.h:42:0,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSSettings.h:203:5: error: 'uint64_t' does not name a type
uint64_t m_ExpectedInvocationCounter;
^
In file included from src/../include/GXAPDU.h:42:0,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSSettings.h:500:5: error: 'uint64_t' does not name a type
uint64_t GetExpectedInvocationCounter();
^
src/../include/GXDLMSSettings.h:501:39: error: 'uint64_t' has not been declared
void SetExpectedInvocationCounter(uint64_t uint32_t);
^
In file included from src/../include/GXDLMSTranslatorStructure.h:43:0,
from src/../include/GXAPDU.h:43,
from src/GXAPDU.cpp:35:
src/../include/TranslatorSimpleTags.h: In static member function 'static unsigned char CTranslatorSimpleTags::GetError(DLMS_SERVICE_ERROR, std::string)':
src/../include/TranslatorSimpleTags.h:826:37: error: 'atol' was not declared in this scope
ret = atol(value.c_str());
^
In file included from src/../include/GXDLMSTranslatorStructure.h:44:0,
from src/../include/GXAPDU.h:43,
from src/GXAPDU.cpp:35:
src/../include/TranslatorStandardTags.h: In static member function 'static unsigned char CTranslatorStandardTags::GetError(DLMS_SERVICE_ERROR, std::string)':
src/../include/TranslatorStandardTags.h:826:37: error: 'atol' was not declared in this scope
ret = atol(value.c_str());
^
src/GXAPDU.cpp: In static member function 'static int CGXAPDU::ParseInitiate(bool, CGXDLMSSettings&, CGXCipher*, CGXByteBuffer&, CGXDLMSTranslatorStructure*)':
src/GXAPDU.cpp:842:17: error: 'uint64_t' was not declared in this scope
uint64_t invocationCounter;
^
src/GXAPDU.cpp:845:44: error: 'invocationCounter' was not declared in this scope
data, security, suite, invocationCounter)) != 0)
^
src/GXAPDU.cpp:876:9: error: 'uint64_t' was not declared in this scope
uint64_t invocationCounter;
^
src/GXAPDU.cpp:878:79: error: 'invocationCounter' was not declared in this scope
settings.GetCipher()->GetBlockCipherKey(), data, security, suite, invocationCounter)) != 0)
^
src/GXAPDU.cpp:890:22: error: 'class CGXDLMSSettings' has no member named 'GetExpectedInvocationCounter'
if (settings.GetExpectedInvocationCounter() != 0)
^
src/GXAPDU.cpp:892:17: error: 'invocationCounter' was not declared in this scope
if (invocationCounter != settings.GetExpectedInvocationCounter())
^
src/GXAPDU.cpp:892:47: error: 'class CGXDLMSSettings' has no member named 'GetExpectedInvocationCounter'
if (invocationCounter != settings.GetExpectedInvocationCounter())
^
src/GXAPDU.cpp:896:55: error: 'invocationCounter' was not declared in this scope
settings.SetExpectedInvocationCounter(1 + invocationCounter);
^
make: *** [obj/GXAPDU.o] Error 1

Kindly help me in regards with this.

Thanks in advance
Nagendra

Profile picture for user Kurumi

Kurumi

5 years ago

Hi Nagendra,

Hi Nagendra,

uint16_t is not defined. Can you find stdint.h? What distro you are using?

BR,
Mikko

  • Create new account
  • Reset your password

Hire Us!

Latest Releases

  • Mon, 07/27/2026 - 12:37
    gurux.dlms.cpp 9.0.2607.2701
  • Thu, 07/23/2026 - 16:19
    gurux.dlms.java 4.0.96
  • Thu, 07/09/2026 - 14:34
    Gurux.DLMS.Python 1.0.201
  • Fri, 06/26/2026 - 16:32
    Gurux.Service 3.0.2606.2601
  • Wed, 06/24/2026 - 08:36
    Gurux.DLMS.Python 1.0.200

New forum topics

  • Service not known error on gprs communication
  • Help Needed: Interfacing Saral 100 Energy Meter with Microcontroller via RS232
  • Connecting Meter to Agent via serial
  • Reading block profile with Compact array
  • DLMS server - serving multiple similar datasets gathered from multiple meters across distinct logical addresses
More

Who's new

  • Brandondiz
  • JeffreyPal
  • DingfanXue
  • UrukTroge
  • Quarryboss
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin