Thanks for replying.
It turns out that I made a mistake. I placed a set of constants in one of the header files and this header file was included in multiple function and kernel definition program files. this caused duplicated definitions of the constants.
But the linker would not point out that the duplication of data was the cause of the failure.